Reputation: 334
I'm doing a restfull api in cakephp... And sometime i have some throw exceptions. For example:
if (!$this->request->is('post')) {
throw new MethodNotAllowedException("The requested resource does not support http method " . $this->request->param('_method'));
}
My problem is when the url is /controller/action.json the response is :
{
message: "The requested resource does not support http method GET",
url: "/api/auth/users/authenticate.json",
code: 405
}
In json format, but, when my url is /controller/action. My response is HTML, i want to know if is possible to force these exceptions to be always json without putting .json in the url.
Thanks!
Upvotes: 5
Views: 1446
Reputation: 436
You can force exceptions to be always rendered in json adding in Controller/ErrorController.php (in beforeRender
)
$this->RequestHandler->renderAs($this, 'json');
Upvotes: 4
Reputation: 446
In the action do the following. As suggested in the notes.
if (!$this->request->is('post')) {
$this->RequestHandler->renderAs($this, 'json');
throw new MethodNotAllowedException("The requested resource does not support http method " . $this->request->param('_method'));
}
For this to work you will need the component too.
public function initialize() {
parent::initialize();
$this->loadComponent('RequestHandler');
}
Upvotes: 0