Я добавляю REST API в существующую кодовую базу cakephp.
Это работает, как я ожидаю. Я нажимаю / api / v1 / contacts / 12312 и возвращаю данные json для контакта 12312. Если указать идентификатор контакта, которого не существует, я получаю сообщение об ошибке html 404, а не json.
Это происходит внутри строки контактов-> get ($ id).
В контроллере приложения API у меня есть
public function initialize()
{
parent::initialize();
$this->loadComponent('RequestHandler');
$this->loadComponent('Crud.Crud', [
'actions' => [
'Crud.Index',
'Crud.View',
'Crud.Add',
'Crud.Edit',
'Crud.Delete'
],
'listeners' => [
'CrudJsonApi.JsonApi',
'CrudJsonApi.Pagination', // Pagination != ApiPagination
'Crud.ApiQueryLog',
],
'Error' => [
'errorLevel' => E_ALL,
'exceptionRenderer' => 'CrudJsonApi\Error\JsonApiExceptionRenderer',
'skipLog' => [],
'log' => true,
'trace' => true,
],
]);
$this->Crud->config(['listeners.jsonApi.exceptionRenderer' => 'CrudJsonApi\Error\JsonApiExceptionRenderer']);
$this->setJsonResponse();
}
public function beforeRender(Event $event)
{
$this->RequestHandler->renderAs($this, 'json');
$this->response->type('application/json');
$this->set('_serialize', true);
}
Я думал, что при использовании ошибок JsonApiExceptionRenderer 404 будет обработан вывод json.
Также работает разбиение на страницы, но данные пагинации не возвращаются с ответом ...
{
"viewVar": "crmContacts",
"crmContacts": [
{
"id": 1,
"lastname": "testname1"
},
{
"id": 2,
"lastname": "smith"
}
],
"success": true
}
Есть идеи?
Спасибо