我正在尝试使用CakePHP 2.3.5编写RESTful服务。到目前为止,我已经成功地为正在使用的资源创建了GET函数。我可以发送一个GET请求到example.com/areas.json
或example.com/areas/1.json
,它返回我的数据库中的数据。
然而,我开始尝试让编辑功能工作。我写了一个简单的编辑方法,简单地保存来自$this->request->data
的传入数据。我使用Postman来测试功能,并通过PUT或POST向example.com/areas/1.json
发送原始JSON,返回一条消息,告诉我数据无法保存。我使该方法在失败时向我发送更多信息,并告诉我在$this->request->data
或$this->data
中没有传入数据。
我一直在互联网上搜索这个或类似问题的解决方案,但到目前为止,我所尝试的一切都失败了。我尝试过禁用CSRF检查,禁用SecurityComponent,以及其他多个涉及安全性的修复。更改任何这些都会导致请求陷入黑洞。
有没有人对我可以尝试让CakePHP接受JSON数据进入请求的其他什么有任何想法?我将在下面包括我的编辑功能,以防有帮助。
public function edit($id)
{
$this->Area->id = $id;
$message['request-data'] = $this->request->data;
if ($this->Area->save($this->request->data)) {
$message['response'] = $this->Area->findById($id);
} else {
$message['response'] = "Error";
}
$this->set(array(
'message' => $message,
'_serialize' => array('message')
));
}
首先,确保请求的Content-Type为application/json。
第二,CakePHP不会自动解码JSON有效负载;你必须手动操作。从手册:
// Get JSON encoded data submitted to a PUT/POST action
$data = $this->request->input('json_decode');