2017-04-27 3 views
0

Yii2, Basisvorlage, Versionierung. Ich versuche eine Methode zu schreiben, die Token zurückgibt.Yii2 REST. So senden Sie eine Post-Anfrage an actionIndex

Es ist mein TokenController:

class TokenController extends Controller 
{ 
public function actionIndex() 
    { 
     $model = new LoginForm(); 
     $model->load(Yii::$app->request->bodyParams, ''); 
     if ($token = $model->auth()) { 
      return $token; 
     } else { 
      return $model; 
     } 
    } 
} 

und config:

'urlManager' => [ 
      'enablePrettyUrl' => true, 
      'showScriptName' => false, 
      'enableStrictParsing' => true, 
      'rules' => [ 
       ''=>'site/index', 
      [ 
        'class' => 'yii\rest\UrlRule', 
        'pluralize' => false, 
        'controller' => [ 
         'v1/token' 
        ], 
        'extraPatterns' => [ 
         'GET <action>'=>'<action>', 
         'POST <action>'=>'<action>', 
        ], 

       ], 

Als ich senden post Anfrage an api.site.ru/v1/token Server zurückgibt: enter image description here

Und für ein absolut identisches Verfahren actionLogin Server Rückkehr: enter image description here

Antwort

2

Standardmäßig erstellt das Muster POST eine Regel, die an eine create Aktion gerichtet ist. Aus diesem Grund versucht Yii, eine create Aktion in Ihrem Controller zu finden. Weitere Informationen finden Sie unter here.

Ich habe es nicht getestet, aber Sie sollten entweder Ihre index Methode zu create umbenennen oder die Standardmuster wie folgt überschreiben;

+0

Im Ernst, 'actionCreate' anstelle von' actionIndex' funktioniert –

+0

Froh, es funktioniert. Ich vermute, der Grund dafür ist, dass normalerweise 'POST'-Daten versuchen, etwas zu erzeugen, was auch immer das sein mag, so dass es die Standardeinstellung ist. Sie sollten diese Einstellung jedoch überschreiben können, wenn sie Ihrem Anwendungsfall nicht entspricht –

Verwandte Themen