无法使用 Yii2 RESTful API 进行 POST 工作

问题描述 投票:0回答:4

我使用 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

rest post methods yii2
4个回答
1
投票

尝试明确允许您的操作使用 POST 方法:

$behaviors['verbs'] = [
                'class' => \yii\filters\VerbFilter::className(),
                'actions' => [
                    'index' => ['post'],
                ],
            ]; 

1
投票

原来我使用了错误的终点。使用这个终点对我有用:

http://localhost/test/create


0
投票

试试这个: $params = \Yii::$app->request->post();

供参考: https://forum.yiiframework.com/t/rest-api-model-create-problem/83651


0
投票

我在 urlManager 中添加前缀如下:

...
,
[
    'class'      => 'api\modules\web\controllers\rest\UrlRule',
    'controller' => [
        'web/device'
    ],
    'prefix'=>'v1',
    'pluralize'  => false,
],
...
    
   

并且 POST 运行良好。 网址如:[POST] http://localhost/v1/device/entry

© www.soinside.com 2019 - 2024. All rights reserved.