如何将 Yii2 自定义 URL 规则中的请求方法从 GET 更改为 POST 等?

How to change request method in Yii2 custom URL rules from GET to POST and others?

我正在尝试使用默认控制器在 Yii2 中使用 RESTfull Web 服务。但是我遇到的问题是,我无法发送带参数的 POST 请求。 下面是我的代码:

Url web.php

中的管理员规则
'urlManager' => [
        'class' => 'yii\web\UrlManager',
        // Disable index.php
        'showScriptName' => false,
        // Disable r= routes
        'enablePrettyUrl' => true,
        'rules' => array(
            ['pattern' => 'api/v1/auth/payment/<id:\d+>', 'route' => 'api/v1/auth/payment'],
            '<controller:\w+>/<id:\d+>' => '<controller>/view',
            '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
            '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
        ),
    ],

AuthController.php 文件在里面 controller/api/v1/

namespace app\controllers\api\v1;

use app\controllers\api\v1\components\ApiFunctions;
use Yii;
use yii\web\Controller;


class AuthController extends Controller
{
    public function actionPayment()
    {
        $id = Yii::$app->getRequest()->getQueryParam('id');
        json_encode($id);
    }

}

但是当我向 http://{url}//api/v1/auth/payment/5 发送 GET 请求时,我得到的响应是 5。但是我想在发送 POST 或任何其他方法时得到那个结果。

那么我该如何实现呢?

使用

'POST <controller:\w+>s' => '<controller>/create',

查看更多http://www.yiiframework.com/doc-2.0/yii-web-urlmanager.html

文档中的更多示例

[
    'dashboard' => 'site/index',

    'POST <controller:\w+>s' => '<controller>/create',
    '<controller:\w+>s' => '<controller>/index',

    'PUT <controller:\w+>/<id:\d+>'    => '<controller>/update',
    'DELETE <controller:\w+>/<id:\d+>' => '<controller>/delete',
    '<controller:\w+>/<id:\d+>'        => '<controller>/view',
];

让我告诉你我是如何解决它的for my application

我为基本应用程序设置构建的一个简单应用程序结构是。

------ 应用程序

------模块

------------api

------------模块

----------------v1

--------------------控制器

--------------------型号

--------------------等等

您可以先完成应用程序设置。

然后在每个控制器中定义动词过滤或通过在公共 class 中定义来对其进行分类,就像我所做的那样 here.

然后使用您在urlManager 中定义的相同规则,您将能够获取请求查询参数。

希望对您有所帮助。