首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用一长串查询参数设计RESTful查询应用编程接口

使用一长串查询参数设计RESTful查询应用编程接口
EN

Stack Overflow用户
提问于 2013-01-08 02:57:08
回答 1查看 100.8K关注 0票数 180

我需要设计一个RESTful查询应用程序接口,它基于一些过滤器返回一组对象。通常的HTTP方法是GET。唯一的问题是,它可能至少有十几个过滤器,如果我们将所有过滤器都作为查询参数传递,URL可能会变得很长(长到足以被某些防火墙阻止)。

减少参数的数量不是一种选择。

我能想到的一种替代方法是在URI上使用POST方法,并将过滤器作为POST主体的一部分发送。这是否有悖于RESTfull (对查询数据进行POST调用)。

有人有更好的设计建议吗?

EN

回答 1

Stack Overflow用户

发布于 2013-01-10 17:02:56

许多人已经接受了这样的做法,即查询字符串太长或太复杂的GET (例如,查询字符串不容易处理嵌套数据)可以作为POST发送,复杂/长数据表示在请求的主体中。

在HTTP规范中查找POST规范。它是非常广泛的。(如果你想驾驶一艘战舰穿过休息区的漏洞...使用POST。)

你失去了GET语义的一些好处...就像自动重试一样,因为GET是幂等的,但是如果你能接受这一点,用POST处理非常长或复杂的查询可能会更容易一些。

(哈...我最近发现,根据HTTP规范,GET可以包含文档体。有一节说,套用一下,“任何请求都可以有一个文档体,除了这一节列出的那些”……并且它引用的部分没有列出任何内容。我搜索并找到了HTTP作者正在讨论这一点的一个帖子,这是有意的,这样路由器等就不必区分不同的消息。然而,在实践中,许多基础设施组件确实丢弃了GET的主体。因此,您可以使用主体中表示的过滤器,比如POST,但这样做是在掷骰子。)

票数 90
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14202257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档