框架在这里
http://luracast.com/products/restler/
我正在使用restler作为我的工作的宁静API,
当我使用骨干模型保存到URL时,它通过使用“ HTTP PUT”请求方法将数据发送并更新为json,而我想从我输入的内容中获取响应...
如果这是我可以使用的HTTP POST请求方法
// to getting content from a POST
$post_data = json_decode(file_get_contents('php://input'), true);
获取我的内容,但无法从HTTP PUT获取任何内容
// can't get anything from a PUT
function putpatients($id) {
$post_data = file_get_contents('php://input');
$post_data = json_decode($post_data, true);
echo $post_data['name'];
}
浏览器响应为空
我如何以json格式返回数据?
最佳答案
如我对您的问题的评论所述,php://input
是一个流,如果您从中读取,它将清空。
我以前从未使用过Restler,但查看其下载中提供的一些示例,似乎表明提交的数据会作为参数自动传递给put处理程序。
在Restler的crud example中,Author类具有如下放置请求:
function put($id=NULL, $request_data=NULL) {
return $this->dp->update($id, $this->_validate($request_data));
}
因此,我猜测restler已经读取了
php://input
流,因此将其清空。因此,您的put处理程序应该更像他们的示例:
function putpatients($id, $request_data = NULL) {
/* do something with the $request_data */
var_dump($request_data);
}
编辑:@deceze中实际上有一个previous SO question,它说明为什么从php:// input读取两次不起作用-对于PUT请求-这说明了为什么代码可以与POST请求一起使用。无论哪种方式,您都应该真正使用Restler提供的功能,而不是重新发明靠垫轮。