2012-07-02 10 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. Однако, когда я отправляю почтовый запрос с помощью плагина консоли REST для Chrome, я получаю ответ «{errors: []}», и новый пользователь не создается. Когда я использую curl, пользователь создается, но после этого я не получаю json-представление пользователя. Любая идея, что происходит?

+0

Вы можете также использовать инструмент как Fiddler, чтобы увидеть, что происходит в запросах под ним? – mellamokb

+0

Хорошо, я раньше не передавал правильные параметры. Теперь я получаю «Представление для UserController :: view() не найдено». Я считаю, что это связано с тем, что перенаправление отправляется/users/1, а не /users/1.json. – shoopdelang

+0

Я бы не рекомендовал перенаправлять вызовы REST, просто переопределите redirect() в вашем контроллере, чтобы просто выполнить одно и то же действие, если вы получите запрос json. –

ответ

0

Если вы еще не сделали, а затем повторите попытку создания app/View/user/json/index.ctp С следующего содержания:

<?php 
return json_encode(compact()); 
?> 
Смежные вопросы