rest - CakePHP 3.x REST API-调试关闭时的自定义错误消息

标签 rest cakephp error-handling exception-handling cakephp-3.x

我有一个连接到CakePHP 3.x后端的基于AngularJS的单页应用程序。 CakePHP在这里就像一个REST API。

在app.php中打开调试时,通过异常引发的错误消息将正确返回,并可以在前端显示为有意义的消息。
示例:“密码不匹配。”

但是,在关闭调试的情况下,仅返回与HTTP状态代码关联的默认错误消息。
示例:“内部服务器错误”

如何确保完整和完整的错误消息发送到前端?

谢谢。

最佳答案

适当时使用HttpException

默认情况下,CakePHP的异常渲染器仅在启用 Debug模式或异常类型为\Cake\Http\Exception\HttpException的情况下才使用异常的消息-适当时使用它(分别由内核提供的子类之一)!

例如,对于您的身份验证失败的特定示例,应使用\Cake\Http\Exception\ForbiddenException,它映射到HTTP 403错误。从HTTP Angular 来看,这是正确的做法,并且还可以解决吞下自定义消息的问题。

另请参见 API > \Cake\Http\Exception\HttpException

使用自定义异常渲染器

创建自定义/扩展的异常渲染器以渲染API响应的自定义格式也很常见。例如,如果您想提交验证错误,该错误通常成组出现,甚至以嵌套的方式出现。

例如,参见 CakePHP 3: Exception handling / serialization in a RESTful API

关于rest - CakePHP 3.x REST API-调试关闭时的自定义错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53152377/

相关文章:

javascript - REST API 的思考

cakephp - 在 beforeDelete 回调中返回 false 会杀死 deleteAll

php - Ajax 调用 (jQuery) 中的错误处理不起作用

error-handling - 检查proc追加是否成功

java - JQuery ajax GET 请求,响应状态为 200 OK 时未触发成功

rest - 从 REST 服务方法返回原始字符串

java - 如何在 XML、REST 和数据库中命名相同的实体?

javascript - 在一个数据库字段中插入多个文本框的数据

CakePHP 2.3.2 BasicAuthentication 不起作用

python - 如何获得成功和错误代码?