我正在使用REST处理Web服务。其中一个API,根据规范必须是GET请求并且具有请求正文。
如何在PHP中访问GET请求主体?
我试过
file_get_contents('php://input');
但没有运气,因为它仅适用于POST和PUT。
有没有办法完成这项工作?
答案 0 :(得分:2)
请求正文的概念对GET请求没有意义。 GET请求就是获取一些信息的请求。您可以使用URL(如果需要,与查询字符串a.k.a.GET参数结合使用)来指定您想要的信息。
HTTP指定服务器应该假装你的身体不存在,这正是你似乎正在经历的。引用罗伊菲尔丁的话:
允许任何HTTP请求消息包含消息正文,以及 [服务器]因此必须解析消息。 GET的服务器语义, 然而,受限制使得身体(如果有的话)没有语义 对请求有意义。 [...]
所以,是的,你可以发送一个带有GET的主体,不,它永远不会有用 这样做。
对于它的价值,RESTClient Firefox插件似乎忽略了你在Body字段中放置的内容,如果你正在使用GET。 RESTClient使用Firefox的XMLHttpRequest,如果方法是GET,它显然会忽略正文数据。我不能说我不同意。