我有一个异构的资源集合,我需要在这些集合上支持多个搜索条件。因为使用查询字符串的URL有限制,所以我想使用HTTP POST而不是GET来实现它
因此,不是
HTTP GET /states/, HTTP GET /cities, HTTP GET /localities我正在考虑将其实现为
HTTP POST /searchengine with the body as
{
"state" : "xxx",
"city": "yyy"
"locality", "zzz"
}并返回结果作为对HTTP POST的响应
因此,我的问题是,是否可以接受POST而不是GET作为RESTful?
如果搜索结果可以响应HTTP POST (使用HTTP 200)发送,或者搜索结果是否应该由Location头指示(使用HTTP 3xx)?
发布于 2018-01-11 23:52:20
做对你的应用程序最有意义的事情。
通过HTTP GET搜索结果可能很方便,因为它们允许用户共享这些URL(如果需要)。但是GET确实达到了您提到的查询字符串限制。
如果切换到HTTP POST是您需要做的,那么就这么做吧。你的问题没有单一的技术答案--一个不一定比另一个更好或更差。
发布于 2018-01-14 01:50:49
在我看来,使用POST请求来检索资源是不可靠的。POST请求的语义在RFC 7231 4.3.3中进行了解释,这里提到的情况都不适用于您的用例。
你应该考虑定义一种新的资源类型,比如搜索结果。关于URI的长度,可以看看RFC 7230 3.1.1,它讨论了发送者和接收者应该支持的建议请求行长度。根据你的例子,我想知道你的情况是否真的有问题。
https://stackoverflow.com/questions/48210979
复制相似问题