php - yii2 rest api异常处理

标签 php rest http exception yii2

我正在使用 yii2 rest api 模块,其中 Controller 类扩展了一个 ActiveController,我在处理错误异常时遇到了问题。当 Yii REST 框架使用 HTTP 状态代码(如 500、400)时,我需要一个正确的 json 响应。如果我在访问 api 上尝试错误的方法调用,它会显示一个异常对象

object(yii\web\NotFoundHttpException)#170 (8) { ["statusCode"]=> int(404) 

在我的 config/main.php 中设置响应

'response' => [
    'class' => 'yii\web\Response',
    'on beforeSend' => function ($event) {
        $response = $event->sender;
        if ($response->data !== null) {
           $response->data = [
             'success' => $response->isSuccessful,
             'data' => $response->data,
           ];
          $response->statusCode = 200;
        }
    },
]

它应该显示如下消息:

{
    "status": 0,
    "error_code": 400,
    "message": "Bad request"
}

我尝试使用此链接在 Controller 中添加行为动词:click here

我的整个应用程序都是基于 api 所以请帮助我处理各种错误

最佳答案

也取决于您的服务器配置,但通常您不需要这些。这应该足够了:

'response' => [
    'format' => yii\web\Response::FORMAT_JSON,
    'charset' => 'UTF-8',
],

这是使用这些配置的输出示例:https://yii2-f4a.rhcloud.com/api/tags

关于php - yii2 rest api异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35218127/

相关文章:

php - 用于在 PHP 中解析 HTML 的 CSS 选择器

rest - Elasticsearch:地理位置距离查询错误

node.js - 如何使用 Node Fetch 将来自 HTTP 请求的数据保存在变量中?

c++ - 使用 pion-net c++ 的 HTTP 客户端请求响应

visual-studio - 通过 http 设置公共(public)(或私有(private))符号服务器

php - 在另一个区域重用 PDO 查询 block 最佳实践

javascript - Ajax 无法使用 php 正确给出响应

nginx - 如何通过解析nginx日志文件自动拒绝ip地址

Rest v2报告执行成功,查看状态报告404错误

java - 通过浏览器代理详细信息识别用户?