从RESTful API检索资源,但URI可能超过允许的长度

从RESTful API检索资源,但URI可能超过允许的长度,rest,Rest,我正在设计一个RESTful API。我需要通过一个很长的过滤器列表来检索一个资源(复杂的报告)。大概是这样的: 所以我应该使用GET HTTP谓词,但是如果URI超过了允许的URL长度(通过浏览器、web服务器或中间代理),我可以使用带有JSON主体封装过滤器的POST请求来实现吗?POST谓词用于创建资源和部分更新,但不用于检索资源。我怎样才能解决这个问题。请告诉我一个符合REST基本原理的解决方案,因为编码URL以减少长度不是一个令人满意的解决方案。我已经对此做了很多研究,但我没有找到一

我正在设计一个RESTful API。我需要通过一个很长的过滤器列表来检索一个资源(复杂的报告)。大概是这样的:


所以我应该使用GET HTTP谓词,但是如果URI超过了允许的URL长度(通过浏览器、web服务器或中间代理),我可以使用带有JSON主体封装过滤器的POST请求来实现吗?POST谓词用于创建资源和部分更新,但不用于检索资源。我怎样才能解决这个问题。请告诉我一个符合REST基本原理的解决方案,因为编码URL以减少长度不是一个令人满意的解决方案。我已经对此做了很多研究,但我没有找到一个合适和明确的指导方针。任何帮助都将不胜感激。

您可以使用POST请求作为替代,以获取发送可能超过最大允许查询字符串长度但符合REST标准的任何大数据的请求,建议您在执行此操作时还发送一个“X-HTTP-Method-Override:GET”头,以告知服务器将其视为GET请求。我见过一些著名的库,比如Google Translate,允许这样做-

您希望查询字符串的长度是多少?看看这篇文章。实际上,我怀疑你会达到一个极限——特别是对于API,谢谢@scrowler的链接。我已经检查了一些此类评论,但我不确定url的长度,因此我不能保证它不超过2048个字符(IE的情况)。这取决于用户界面选择的过滤器,事实上,它可能如此之长。