如何获得GET请求体

时间:2014-03-13 20:36:23

标签: php rest

我正在使用REST处理Web服务。其中一个API,根据规范必须是GET请求并且具有请求正文。

如何在PHP中访问GET请求主体?

我试过

file_get_contents('php://input');

但没有运气,因为它仅适用于POST和PUT。

有没有办法完成这项工作?

1 个答案:

答案 0 :(得分:2)

请求正文的概念对GET请求没有意义。 GET请求就是获取一些信息的请求。您可以使用URL(如果需要,与查询字符串a.k.a.GET参数结合使用)来指定您想要的信息。

HTTP指定服务器应该假装你的身体不存在,这正是你似乎正在经历的。引用罗伊菲尔丁的话:

  

允许任何HTTP请求消息包含消息正文,以及   [服务器]因此必须解析消息。 GET的服务器语义,   然而,受限制使得身体(如果有的话)没有语义   对请求有意义。 [...]

     

所以,是的,你可以发送一个带有GET的主体,不,它永远不会有用   这样做。

(via here)

对于它的价值,RESTClient Firefox插件似乎忽略了你在Body字段中放置的内容,如果你正在使用GET。 RESTClient使用Firefox的XMLHttpRequest,如果方法是GET,它显然会忽略正文数据。我不能说我不同意。