自定义动作动词不工作在yii2 REST API
问题描述:
我添加了一个动词的动词行为只允许POST请求的一些行动,如果请求不是一个POST它应该返回方法不允许,但这是行不通的它返回404未找到响应不是405不允许响应,当我发送一个GET请求而不是POST请任何帮助自定义动作动词不工作在yii2 REST API
我在REST设置控制的行为,如该
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;
}
主
。 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请求
GET localhost/mywebsite/api/web/v1/vendors/test
它返回404种不是405状态,请帮忙
答
从Yii2方针routing:漂亮的网址,严格的分析总是抛出\警予\网络\ NOTFOUND \ HttpException。 你可以更新控制器的beforeAction:
public function beforeAction() {
if (Yii::$app->getRequest()->getMethod() != 'POST') {
throw new \yii\web\MethodNotAllowedHttpException('Only allow POST request');
}
}
如果你尝试'POST'请求呢? –
它返回200 @EdvinTenovimas – Fadi