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

CakePHP 3.x REST API - Custom Error Messages when debug is off

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

在 app.php 中打开调试时,通过异常抛出的错误消息会正确返回,并且可以在前端显示为有意义的消息。
示例: "Password does not match."

但是,关闭调试后,只会返回与 HTTP 状态代码关联的默认错误消息。
示例: "Internal Server Error"

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

谢谢。

在适当的时候使用 HttpException

默认情况下,CakePHP 的异常渲染器将仅在启用调试模式时使用异常消息,或者当异常属于 \Cake\Http\Exception\HttpException 类型时 - 使用它(分别由核心提供的子类之一)在适当的时候!

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

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

使用自定义异常渲染器

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

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