2012-07-02 120 views
0

我想創建一個RESTful API與CakePHP,將POST請求發送到/users.json時將添加一個用戶。用戶創建後,客戶端將被重定向到帶有用戶的JSON表示的頁面。我有用於控制器的代碼是:REST API與CakePHP

class UsersController extends AppController { 

    public $components = array('RequestHandler'); 

    public function view($id) { 
     $user = $this->User->findById($id); 
     $this->set(array(
      'user' => $user['User'], 
      '_serialize' => 'user' 
     )); 
    } 

    public function add() { 
     if ($this->User->save($this->data)) { 
      $this->redirect(array('action' => 'view', 1)); //using 1 just to test 
     } else { 
      print_r($this->User->validationErrors); 
      $this->set(array(
      'errors' => $this->User->validationErrors, 
      '_serialize' => array('errors') 
     )); 
     } 
    } 
} 

我已經加入路由器:: mapResources( '用戶')和路由器:: parseExtensions( 'JSON')到routes.php文件。但是,當我使用Chrome的REST控制檯插件發送發佈請求時,我收到了「{errors:[]}」的響應,並且沒有創建新用戶。當我使用curl時,會創建一個用戶,但是之後我沒有得到用戶的json表示。任何想法發生了什麼?

+0

你能還使用像小提琴手的工具,看看發生了什麼事情在下面的請求? – mellamokb

+0

好吧,我沒有通過正確的參數。現在我得到「未找到UsersController :: view()的視圖」。我相信這是因爲重定向到/ users/1而不是/users/1.json。 – shoopdelang

+0

我不會建議在REST調用中重定向,只需在您的控制器中覆蓋重定向()以便在出現json請求的情況下呈現相同的動作 –

回答

0

如果您還沒有這樣做,然後創建app/View/user/json/index.ctp 有了以下各項內容後重試:

<?php 
return json_encode(compact()); 
?>