【发布时间】:2017-07-31 23:00:07
【问题描述】:
我目前正在用 PHP 开发一个 Restful Json-API。我想向items/:id 发送 PUT 请求以更新记录。数据将以application/json 传输。
我想调用 API
curl -H "Content-Type: application/json" -X PUT -d '{"example" : "data"}' "http://localhost/items/someid"
在服务器端,我无法检索请求正文。我试过了
file_get_contents("php://input");
但这会返回一个空字符串。 fopen()/fread() 组合也不起作用。
通过 POST 调用时,一切正常,我可以在服务器端完美读取 json。但是 API 不再是 Restful。有人对此有解决方案吗?还有另一种发送和接收 Json 的方法吗?
顺便说一句,我正在使用 Slim Framework 开发 API。
【问题讨论】:
-
你试过 fopen("php://input", "r") 吗?
-
太棒了,您正在使用 slim。我希望你有很好的经验。我真的很喜欢我的 SLIM restful api 创作
-
手册中的 This comment 建议您可能需要发送 Content-Length 标头(不确定 cURL 是否会自动执行此操作...)并使用
fopen,而不是file_get_contents.不知道这有多准确,但可能值得一试...... -
curl 确实发送了 Content-Length 标头,并且在手动发送时也没有任何变化。 fopen 也不起作用。