使用POST作为URL字符限制的变通方法

时间:2011-05-10 08:38:05

标签: rest architecture httpverbs

如果你有一个API并且仅仅因为URL长度限制和请求中复杂参数的传递而支持POST操作,你还能说你有一个RESTful架构吗?

上面基本上暗示的是,对于这个特定的(只读)API,GET和POST之间没有语义差异,所以用GET可以做什么也可以通过POST完成(但不能反之亦然,因为有限制)。

这仍然会使该架构的风格成为RESTful吗?

5 个答案:

答案 0 :(得分:4)

从技术上讲,您没有违反任何限制。但是,您严重降低了请求的自描述性。这将导致失去缓存响应的能力。能够缓存响应是构建有效REST系统所必需的基本功能。

答案 1 :(得分:0)

“代表性国家转移”一词由Roy Fielding于2000年在他的博士论文中引入和定义。 6.3节介绍了如何将REST应用于HTTP:http://www.ics.uci.edu/~fielding/pubs/dissertation/evaluation.htm#sec_6_3

菲尔丁并未声称禁止使用POST。

Wikipedia还提到POST是RESTful Web服务的合法HTTP操作: http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services

答案 2 :(得分:0)

所以这里的问题是宁静的架构而不是宁静的网络服务。如果我们按照Wiki-RestfulArch-Constraints给出的信息,那就是。

答案 3 :(得分:0)

您肯定会失去HTTP为GET请求提供的功能。例如,代理对GET请求做出某些假设(幂等性,可达性)。

POST perse没有问题,但是REPORT方法可能更合适。

答案 4 :(得分:0)

为什么不简单地切换到在GET中包含一个主体而不是使用查询字符串?

更新

RFC说明如下:

  

服务器应该      在任何请求上读取和转发消息正文;如果是请求方法      不包含实体主体的定义语义,然后是      处理请求时,应该忽略message-body

规范中的 没有 ,表明任何方法都不能包含正文并且所有代理,服务器等都必须包含正文。这取决于处理程序(你)是否忽略了正文。

对于GET方法,没有任何内容表明它不能包含正文。

这意味着只要您的Web服务器支持GET正文,就可以使用GET正文。

相关问题