带有JSON输入的CakePHP API PUT

时间:2011-12-22 15:25:56

标签: php json api cakephp rest

我正在使用CakePHP构建API。

我想从我的移动应用程序中使用PUT来更新数据。格式为JSON作为输入,但$ this->数据似乎为空。

我从我的应用程序中调用此url(在文档中指定): /recipes/123.json

在我的“食谱”(或其他)中,我有以下控制器:

function edit($id = null) {

    $this->User->id = $id;
    if (empty($this->data)) {
        $this->data = $this->User->read();
        $message = array('StatusCode' => 999, 'ERROR' => "");
    } else {
        if ($this->User->save($this->data)) {
            $message = array('StatusCode' => 200, 'ErrorCode' => "");
        } else {
            $message = array('StatusCode' => 400, 'ErrorCode' => "UnknownError");
        }

    }

    $this->set(compact("message"));

    $this->set('albums', $this->User->Album->find('list'));
}

我在我的应用程序中正确收到了JSON响应但是我得到了999错误 - 意味着$ this->数据为空。 在我的控制器中的add函数中,它使用POST接收JSON - $ this->数据被正确分配。哦,如果我在编辑中使用POST而不是PUT - $ this->数据设置,但我无法保存数据..

那么..我该怎么做? :S

2 个答案:

答案 0 :(得分:5)

从luchomolina的链接中插入 http://book.cakephp.org/2.0/en/controllers/request-response.html#accessing-xml-or-json-data

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

你得到了你的对象。

$data->Model->field ...

答案 1 :(得分:0)

我尚未对其进行测试,但我认为您的数据位于$this->request->input()$this->request->data()

更多信息:

http://book.cakephp.org/2.0/en/controllers/request-response.html#accessing-xml-or-json-data

http://book.cakephp.org/2.0/en/controllers/request-response.html#CakeRequest::data