2017-04-27 80 views
0

Yii2,基本模板,版本控制。 我想写一个方法,将返回令牌。Yii2 REST。如何发送post请求到动作索引

还有就是我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; 
     } 
    } 
} 

和配置:

'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>', 
        ], 

       ], 

当我送post请求api.site.ru/v1/token服务器返回: enter image description here

而对于一个完全相同的方法actionLogin服务器退货: enter image description here

回答

2

默认情况下,POST模式会创建一条规则以指向create操作。这就是Yii试图在你的控制器中找到create动作的原因。有关更多详细信息,请参见here

我还没有测试过它,但是您应该将index方法重命名为create,或者覆盖像这样的默认模式;

'patterns' => [ 
    'POST'=>'index', 
], 
+0

说真的,'actionCreate'而不是'actionIndex'的工作原理 –

+0

很好用。我猜这是因为它的工作原理通常是'POST'数据试图创建一些东西,不管它是什么,所以它是默认设置。你应该可以覆盖该设置,但如果它不适合你的用例 –