我正在开发一个允许用户按位置过滤的应用程序。为此,我将城市过滤器添加到查询参数中。例如,如果有人选择,California
我会将其编码为 base64,然后将过滤器添加到我的查询参数中。这是编码的过滤器对象:
[{city: "San Francisco", state: "California", country: "USA"}, {...}, {...}]
编码后的请求如下所示:
http://localhost:3001/api/v1/companies?offset=0&limit=50&locs=W3siY2l0eSI6IkFsYW1lZGEiLCJzdGF0ZSI6IkNhbGlmb3JuaWEiLCJjb3VudHJ5IjoiVW5pdGVkIFN0YXRlcyJ9LHsiY2l0eSI6IkFuYWhlaW0iLCJzdGF0ZSI6IkNhbGlm...
但是,经过一定数量的过滤器后,我遇到了标头限制(即我无法将更多信息放入请求标头中)。
处理这个问题的最佳实践方法是什么?我应该发送POST
请求,还是会被拒绝?
仅供参考——用户可以单击进入一个州并选择/取消选择特定城市。例如,某人可以单击California
并取消选中San Francisco
和Los Angeles
。
请求 URI 不被视为标头,但您仍然可能会遇到限制。通常建议保持在 2048 字节以下。
如果超出此范围,请切换到不同的 HTTP 方法(
QUERY
、POST
)并使用请求正文。QUERY
更适合读取操作,浏览器支持,但还不是每个服务器都支持。POST
是一个不错的第二选择。