Yii2 REST。如何将post请求发送到actionIndex

时间:2017-04-27 03:00:54

标签: yii2

Yii2,基本模板,版本控制。 我正在尝试编写一个可以返回令牌的方法。

有我的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;
        }
    }
}

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

                ],

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

对于一个绝对相同的方法,actionLogin服务器返回: enter image description here

1 个答案:

答案 0 :(得分:2)

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

我尚未对其进行测试,但您应将index方法重命名为create,或覆盖此类默认模式;

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