CakePHP REST Put / Post不接受数据

时间:2013-05-25 02:02:26

标签: php json rest cakephp cakephp-2.3

我正在尝试使用CakePHP 2.3.5编写RESTful服务。到目前为止,我已成功为我正在使用的资源创建了GET函数。我可以向example.com/areas.jsonexample.com/areas/1.json发送GET请求,并返回我数据库中的数据。

但是,我开始尝试让编辑功能正常工作。我写了一个简单的编辑方法,只是保存了来自$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')
    ));
}

1 个答案:

答案 0 :(得分:3)

首先,确保请求的Content-Type是application / json。

其次,CakePHP不会自动解码JSON有效负载;你必须手动完成。来自manual

// Get JSON encoded data submitted to a PUT/POST action
$data = $this->request->input('json_decode');