我使用 ActiveController 和基本身份验证在 Yii2-Basic 中编写了 RESTful API。我可以使用 GET 方法,但是当我使用 Postman Chrome 扩展尝试 Post 时,它会抛出一个错误,提示“方法不允许。此 url 只能处理以下请求方法:GET、HEAD。”。
我是否需要在网络服务器上配置任何内容来测试此功能,或者需要控制器中的其他功能?我什至尝试使用一个非常简单的包含两列的表,并将这些列设置为安全,如另一个问题中所暗示的。
感谢这方面的任何帮助。以下是我当前的代码:
<?php
namespace app\controllers;
use yii\rest\ActiveController;
use yii\filters\auth\HttpBasicAuth;
class TestController extends ActiveController
{
public $modelClass = 'app\models\Test';
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator'] = [
'class' => HttpBasicAuth::className(),
];
return $behaviors;
}
}
我用来测试的 URL 是: http://localhost/test
尝试明确允许您的操作使用 POST 方法:
$behaviors['verbs'] = [
'class' => \yii\filters\VerbFilter::className(),
'actions' => [
'index' => ['post'],
],
];
原来我使用了错误的终点。使用这个终点对我有用:
试试这个: $params = \Yii::$app->request->post();
供参考: https://forum.yiiframework.com/t/rest-api-model-create-problem/83651
我在 urlManager 中添加前缀如下:
...
,
[
'class' => 'api\modules\web\controllers\rest\UrlRule',
'controller' => [
'web/device'
],
'prefix'=>'v1',
'pluralize' => false,
],
...
并且 POST 运行良好。 网址如:[POST] http://localhost/v1/device/entry