Я пытаюсь создать 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-представление пользователя. Любая идея, что происходит?
Вы можете также использовать инструмент как Fiddler, чтобы увидеть, что происходит в запросах под ним? – mellamokb
Хорошо, я раньше не передавал правильные параметры. Теперь я получаю «Представление для UserController :: view() не найдено». Я считаю, что это связано с тем, что перенаправление отправляется/users/1, а не /users/1.json. – shoopdelang
Я бы не рекомендовал перенаправлять вызовы REST, просто переопределите redirect() в вашем контроллере, чтобы просто выполнить одно и то же действие, если вы получите запрос json. –