2017-09-01 32 views
1

我已经在我的yii2高级应用程序中创建了API模块,并且还在控制器文件中添加了HttpBearerAuth并且它正在工作。如何更改yii2高级API响应标签

论无权我得到如下回应:

{"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} 

如何更新这些键?

回答

0

将事件处理程序附加到yii \ web \ Response :: EVENT_BEFORE_SEND并检查yii \ web \ Response类的$ 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']); 
     } 
    } 
}); 
+0

在哪里添加此代码,其中的文件吗? –

+0

好吧,这类事件处理程序是附属于类本身(即“全局”),所以在触发事件之前的任何地方都可以工作。例如在控制器(任何操作或beforeAction)中或在应用程序引导程序配置中。取决于你希望处理程序运行的时间。 – karpy47

+0

获得例外'类'后端\模块\ API \控制器\事件'找不到'。 –