YII 2.0 REST API错误处理程序

use*_*221 4 php yii yii2

当API用作模块时,如何设置REST API错误处理程序.我在HTML响应中找到了无效的404发现异常而不是json/xml响应.

这是带有无效入口点的示例api URL

http://localhost.backend.com/api/v1/invalidentrypoint

这里api在一个模块中,v1与api模块嵌套.

反应是

未找到(#404)无法解析请求"api/v1/invalidentrypoint".Web服务器处理您的请求时发生上述错误.如果您认为这是服务器错误,请与我们联系.谢谢.

我期待像这样的回应

**HTTP/1.1 404未找到日期:太阳,2014年3月2日05:31:43 GMT服务器:Apache/2.2.26(Unix)DAV/2 PHP/5.4.20 mod_ssl/2.2.26 OpenSSL/0.9.8y转移-Encoding:chunked

Content-Type:application/json; charset = UTF-8 {"type":"yii\web\NotFoundHttpException","name":"Not Found Exception","message":"找不到请求的资源.","code":0,"status ":404}**

请帮忙.

Jef*_*fom 9

您是否尝试将响应格式设置为json?

只需添加到配置:

'response' => [
    'format' =>  \yii\web\Response::FORMAT_JSON
]
Run Code Online (Sandbox Code Playgroud)

这里是yii文档中的一些信息:https: //github.com/yiisoft/yii2/blob/master/docs/guide/rest-error-handling.md

编辑:使用来自ethan的注释的yii定义,define是"json"但是使用来自Yii的定义的const是一个很好的实践

  • 这是正确的答案,应该这样标记.虽然,可能最好将格式设置为\ yii\web\Response :: FORMAT_JSON而不是原始字符串'json'. (2认同)