cakephp 3个其他错误返回为html CrudJsonApi

时间:2018-07-02 13:26:12

标签: json rest api cakephp-3.0

我正在将REST API添加到现有的Cakephp代码库中。

它正在按预期运行。我打/ api / v1 / contacts / 12312并获取联系人12312的json数据。如果放置了不存在的联系人的id,那么我会收到html 404页面错误而不是json。

这在内部发生在contacts-> 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
}

有什么想法吗?

谢谢

0 个答案:

没有答案