如何更改 yii2 高级 API 响应的键标签

How to change keys lable of yii2 advanced API response

我已经在我的 yii2 高级应用程序中创建了 API 模块,还在控制器文件中添加了 HttpBearerAuth,它正在运行。

在未经授权时,我收到以下回复:

{"name":"Unauthorized","message":"Your request was made with invalid credentials.","code":0,"status":401,"type":"yii\web\UnauthorizedHttpException"}

我想像下面这样更改此响应的键标签:

{"error":"Unauthorized","errorMessage":"Your request was made with invalid credentials.","code":0,"status":401}

如何更新这些密钥?

将事件处理程序附加到 yii\web\Response::EVENT_BEFORE_SEND 并检查 yii\web\Response class 的 $data 属性。不确定,但我猜你会找到一个数组,其中的键正是你想要更改的键。 您只需要过滤掉您想要处理的响应(例如,除了状态代码 200 和 201 之外的所有响应)。

可能是这样的...可能包含错误:-)

Event::on(yii\web\Response::className(), yii\web\Response::EVENT_BEFORE_SEND, function ($event) {
    if (Yii::$app->response->getStatusCode() > 201) {
        if (isset(Yii::$app->response->data['name']) {
            Yii::$app->response->data['error'] = Yii::$app->response->data['name'];
            unset(Yii::$app->response->data['name']);
        }
    }
});