Php 自定义操作的谓词在yii2 REST API中不起作用

Php 自定义操作的谓词在yii2 REST API中不起作用,php,rest,yii2,yii2-advanced-app,Php,Rest,Yii2,Yii2 Advanced App,我在动词行为中添加了一个动词,以仅允许对某些操作发出POST请求,如果请求不是POST,则应返回方法not allowed,但这不起作用。当我发送GET请求而不是POST时,返回404 not found response not 405 not allowed RESPOWER,请提供任何帮助 我在休息时控制这样的行为 public function behaviors() { $behaviors = parent::behaviors(); $behaviors['auth

我在动词行为中添加了一个动词,以仅允许对某些操作发出POST请求,如果请求不是POST,则应返回方法not allowed,但这不起作用。当我发送GET请求而不是POST时,返回404 not found response not 405 not allowed RESPOWER,请提供任何帮助

我在休息时控制这样的行为

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;
}
在main.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+>'
                ]
            ],
        ],
    ]
它返回404而非405状态请从Yii2获得任何帮助指南:漂亮的url,严格的解析总是抛出\yii\web\NotFound\HttpException。 您可以在操作前更新控制器的:

public function beforeAction() {
     if (Yii::$app->getRequest()->getMethod() != 'POST') {
          throw new \yii\web\MethodNotAllowedHttpException('Only allow POST request');
     }
}
根据Yii2指南:漂亮的url,严格解析总是抛出\yii\web\NotFound\HttpException。 您可以在操作前更新控制器的:

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

如果您尝试
POST
request怎么办?它返回200@edvintenovimas,如果您尝试
POST
request怎么办?它返回200@edvintenovimas欢迎堆栈溢出。您可能应该在答案中添加更多信息来解释它。欢迎使用堆栈溢出。你可能应该在你的答案中添加更多的信息来解释它。
'extraPatterns' => [
                ...
                'test' => 'test'
            ]