2017-09-01 1 views
1

Ich habe API-Modul in meiner erweiterten yii2-Anwendung erstellt und auch HttpBearerAuth in der Controller-Datei hinzugefügt und es funktioniert.So ändern Sie die Tasten label yii2 erweiterte API-Antwort

Auf Unerlaubte ich unten Antwort bekommen:

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

Ich möchte unten wie Tastenbeschriftung dieser Antwort ändern:

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

Wie aktualisiere ich diese Schlüssel?

Antwort

0

Hängen Sie einen Ereignishandler an yii \ web \ Response :: EVENT_BEFORE_SEND an und untersuchen Sie das $ data-Attribut der yii \ web \ Response-Klasse. Nicht sicher, aber du wirst ein Array finden, in dem die Schlüssel genau die sind, die du ändern willst. Sie müssen nur die Antworten herausfiltern, die Sie behandeln möchten (z. B. alles außer Statuscodes 200 & 201).

Vielleicht so etwas wie ... wahrscheinlich Bugs enthalten :-)

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

Wo diesen Code hinzuzufügen, in welcher Datei? –

+0

Nun, diese Art von Event-Handler ist an die Klasse selbst gebunden (dh "global"), also irgendwo vor dem Ereignis ausgelöst wird funktioniert. Zum Beispiel in einem Controller (beliebige Aktion oder die beforeAction) oder in Ihrer Anwendung Bootstrap-Konfiguration. Hängt davon ab, wann Ihr Handler ausgeführt werden soll. – karpy47

+0

Ausnahmebedingung 'Class 'Backend \ Module \ api \ controllers \ Event' not found'. –