繁体   English   中英

如何将巨大的参数列表发送到 GET 请求

[英]How to send a huge parameter list to a GET request

我的服务器中有一个 REST API,其中List操作(应该使用 GET 方法实现)从客户端接收多个参数:

  • 当前页面
  • 行数
  • 用于执行快速搜索的文本
  • 为搜索定义复杂过滤器的对象(“字段操作值”形式的规则集)

由于这个用于过滤搜索的复杂对象,我需要将列表定义为 POST,我认为这不是一个好主意,因为 REST 将列表操作定义为 GET。

我的问题很简单:有没有办法使用 GET 方法解决这个问题,避免使用带有参数的巨大 URL 调用它?

感谢您的回答。 似乎这个问题真的很令人担忧,因为没有明确的有效答案。 由开发人员决定如何处理它。

  • REST 说你应该使用 GET 方法来列出,但是大的 URI 非常难看。 现在有什么问题吗? 好像没有问题,因为大多数浏览器都支持非常大的URI(Internet Explorer,回家,你不玩这个游戏)
  • 您也可以使用 PUT/POST 方法进行列表,但它似乎没有完成 REST 原则
  • 可以使用GET方法传递简单的参数,将复杂的参数附加到body中,但是没有完成HTTP的原理

所以似乎最好的方法是第一种:使用 GET 并构建巨大的 URI。

您可以将对象转换为 json,然后对 json 文本字符串进行 url 编码,以便将其放入单个参数中。

要使 url 编码的 json 字符串更短,您可以在将对象转换为 json 文本字符串之前从对象中删除所有默认值。

get 请求中的长查询字符串很常见,因此无需担心这些。 查询字符串的长度是有限制的

我遇到了类似的问题。 我不得不发送一个巨大的列表,但我仍然必须使用 GET。 我最终使用编码算法对字符串进行编码并像这样发送它。 我在后端解码列表。 我还有一个参数,它指定调用是否已编码,因此,端点可以同时使用编码和未编码。

您也可以将这种方法用于多个参数。 您可以发送参数列表,如 param1:value1,param2:value2 编码并在后端解码。

我研究的另一种方法是使用 Base 62 来转换数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM