cakephp crud插件返回验证错误

时间:2019-04-19 20:35:41

标签: rest cakephp crud cakephp-3.7

使用Crud pluginCrud.Api侦听器对记录进行PATCH处理时,成功的PATCH将在响应中返回一个200 OK及其一个空数据数组。

{
    "success": true,
    "data": []
}

在PATCH之后验证失败时,将返回带有以下响应的422 Unprocessable Entity

{
    "message": "A validation error occurred",
    "url": "\/admin\/users\/edit\/4.json",
    "code": 422,
    "file": "\/app\/vendor\/friendsofcake\/crud\/src\/Listener\/ApiListener.php",
    "line": 189
}

但是我期望这样:

{
    "success": false,
    "data": [
       "errors": [...]
    ]

}
  

https://crud.readthedocs.io/en/latest/listeners/api.html#http-put-edit

     

如果成功为假,则将返回HTTP响应代码422,   以及数据中来自模型的验证错误列表   响应主体的属性。

是否需要将插件配置为返回错误?

1 个答案:

答案 0 :(得分:1)

我对Crud插件不太熟悉,但是该响应看起来像默认的CakePHP异常渲染器响应,因此我想您可能尚未将应用程序配置为使用Crud异常渲染器:

config / app.php

'Error' => [
    'exceptionRenderer' => \Crud\Error\ExceptionRenderer::class,
    // ...
],

从文档中引用:

  

注意:但是,如果您使用的是CakePHP 3.3+的PSR7中间件功能,将不会使用exceptionRenderer配置,而必须将config / app.php中的Error.exceptionRenderer配置设置为'Crud \ Error \如下所示的ExceptionRenderer'

请参见 Crud Docs > Listeners > API > Exception handler