【问题标题】:PHP - restful API - HTTP GET request with long URIPHP - RESTful API - 带有长 URI 的 HTTP GET 请求
【发布时间】:2015-06-25 09:41:27
【问题描述】:

我在 PHP Restful API 中遇到问题...

我正在尝试通过调用此 API 来获取一些产品信息(重量、工艺、价格...)。

问题在于提供的 URI 可能包含很多字符,因为我们试图尽可能少地调用 API。

如你所见,如果我们使用 HTTP GET 方法发送的 URI 太长,我肯定会以 414 或 500 HTTP ERROR 结束。

那么我们该怎么做:

  1. 发送 HTTP GET 请求以获取具有长 URI 的信息
  2. 保持 RESTFUL(不使用 POST,就像我参考 Restful 文档一样 -> 这是主要问题)

这是一个请求示例:

http://<myWebsite>/rprocess/api/process/{"data":["FLY.DELeco.LOT100.DIM10x10.FACrv.SUPdemma.GRA350.PELbrv.VERss","FLY.DELnor.LOT500.DIM20x30.FACr.SUPcoubr.GRA300.PELbrv.VERss"]}
  • 如您所见,我们在 URI 中发送 JSON 编码字符串。
  • 此示例有效,因为我们只尝试获取两种产品的 [处理] 信息(我们希望调用更多产品)

我已经搜索过这个问题的答案,但在这种情况下我们似乎无法保持平静。

以下是我找到的答案:

  1. 使用 POST 并将设置标题添加到 X-HTTP-Method-Override: GET
  2. 增加服务器上的url limit size(不推荐)
  3. 拆分 GET 请求以免达到 url 长度限制(这不是一个好主意,因为 API 可以一次处理更多产品,因为我们实际上可以发送它......)

我希望这些信息可以帮助你回答我的问题:)

感谢您的帮助

【问题讨论】:

    标签: php json rest get restful-url


    【解决方案1】:

    如果您有一个规范化的数据库表来帮助缩短您的请求,也许您可​​以尝试按 id 查找数据

    或者您可以尝试将查询 POST 到服务器,存储请求的详细信息,然后使用先前存储的请求的 ID 执行 GET 请求

    【讨论】:

    • 感谢您的回答!我认为问题不存在......试着想象发送一个带有'12345'而不是我们的“FLY ...”的json,在某些时候我们将达到URI长度的限制,即使ID更小.
    • 是否值得考虑在客户端使用分页?这样您就可以检索更易于管理的块
    • 分页将导致这个答案:拆分 GET 请求以便不达到 url 长度限制(这不是一个好主意,因为 API 可以一次处理更多产品,因为我们可以实际发送它...)
    • 编辑:分页将导致此答案:Split the GET requests in order not to reach the url length limit (that's not a good idea because the API can handle way more product at a time as we can actually send it ...) 在我的情况下,此请求仅在脚本中使用,因此我们不需要任何分页;)也许我在错误的方式...尝试想象您想要搜索具有许多过滤器的内容。过滤器太多导致生成的 URI 太长。 mySite/products/{filter1:&lt;filter1&gt;, filter2:&lt;filter2&gt;, ...}
    • 我面临的问题与您完全相同。我的一位开发人员建议在发送请求时加密参数(因此可以更短),并在需要在服务器端读取时解密。没试过。你觉得这是个好习惯吗?
    猜你喜欢
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多