限时 5折! 详情
yii2-advanced restful api 错误返回格式
1 293 2017-09-13

实际的错误返回格式 :

{
    "name": "Not Found",
    "message": "页面未找到。",
    "code": 0,
    "status": 404,
    "type": "yii\\web\\NotFoundHttpException",
    "previous": {
        "name": "Invalid Route",
        "message": "Unable to resolve the request \"v1/study/search/1\".",
        "code": 0,
        "type": "yii\\base\\InvalidRouteException"
    }
}

我想要的返回格式:

{
    "success": false,
    "data": {
        "name": "Not Found Exception",
        "message": "The requested resource was not found.",
        "code": 0,
        "status": 404
    }
}

我的返回配置:

'components' => [
        'response' => [
            'format' =>  \yii\web\Response::FORMAT_JSON,
        ],
            //以下按照官方文档配置,未启作用
//        'response' => [
//            'class' => 'yii\web\Response',
//            'on beforeSend' => function ($event) {
//                $response = $event->sender;
//                if ($response->data !== null && !empty(Yii::$app->request->get('suppress_response_code'))) {
//                    $response->data = [
//                        'success' => $response->isSuccessful,
//                        'data' => $response->data,
//                    ];
//                    $response->statusCode = 200;
//                }
//            },
//        ],
        'request' => [
            'parsers' => [
                'application/json' => 'yii\web\JsonParser',
            ]
        ],
  • 1 个回答
  • 这个问题,其实我们在rest实战一文中说的已经非常清楚了,当然只有付费用户才可以阅读。
    解决的核心就是yii\web\Response::EVENT_BEFORE_SEND事件的实现

登录 去赚佣金