Php 自定义操作的谓词在yii2 REST API中不起作用
我在动词行为中添加了一个动词,以仅允许对某些操作发出POST请求,如果请求不是POST,则应返回方法not allowed,但这不起作用。当我发送GET请求而不是POST时,返回404 not found response not 405 not allowed RESPOWER,请提供任何帮助 我在休息时控制这样的行为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
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'
]