2016-08-14 5 views
1

動詞の動作に動詞を追加して、何らかのアクションのPOSTリクエストのみを許可します。リクエストがPOSTではない場合、メソッドは許可されませんが、これは動作しませんそれは私が代わりにPOSTのGETリクエストを送信していたときに私は私のRESTに設定された任意のヘルプカスタムアクションの動詞がyii2 REST APIで機能しない

がメインでこの

public function behaviors() 
{ 
    $behaviors = parent::behaviors(); 
    $behaviors['authenticator'] = [ 
     'class' => CompositeAuth::className(), 
     'except' => ['login'], 
     'authMethods' => [ 
      HttpBearerAuth::className(), 
     ], 
    ]; 

    $behaviors['verbs'] = [ 
     'class' => \yii\filters\VerbFilter::className(), 
     'actions' => [ 
      //'index' => ['get'], 
      'login' => ['post', 'put'], 
      'view' => ['get'], 
      //'create' => ['get', 'post'], 
      'update' => ['put'], 
      //'delete' => ['post', 'delete'], 
      'delete' => [''], 
      'test', ['post'] 
     ], 
    ]; 

    return $behaviors; 
} 

などの動作を制御応答をしてください許可されていません405 404見つからない応答を返します。 PHP

'urlManager' => [ 
     'enablePrettyUrl' => true, 
     'enableStrictParsing' => true, 
     'showScriptName' => false, 
     'rules' => [ 
      [ 
       'class' => 'yii\rest\UrlRule', 
       'controller' => ['v1/vendor'], 
       'extraPatterns' => [ 
        'POST,PUT login' => 'login', 
        'POST logout' => 'logout', 
        'POST test' => 'test' 
       ], 
       'tokens' => [ 
        '{id}' => '<id:\\w+>' 
       ] 
      ], 
     ], 
    ] 

ので、私は

GET localhost/mywebsite/api/web/v1/vendors/test 

をテストし、

にGETリクエストを送信したとき、それは404ない405のステータスを返してくださいYii2ガイドライン routingから任意のヘルプ

+0

「POST」リクエストを試してみてはどうですか? –

+0

それは200を返す@EdvinTenovimas – Fadi

答えて

-1

:かなりURL、厳格な解析常に投げる\のYii \ウェブ\ NOTFOUND \ HttpException。 コントローラのbeforeActionを更新することができます:

public function beforeAction() { 
    if (Yii::$app->getRequest()->getMethod() != 'POST') { 
      throw new \yii\web\MethodNotAllowedHttpException('Only allow POST request'); 
    } 
} 
関連する問題