簡體   English   中英

如何將Yii2自定義URL規則中的請求方法從GET更改為POST等?

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

我正在嘗試使用默認控制器在Yii2中的RESTfull Web服務中工作。 但我遇到的問題是,我無法發送帶參數的POST請求。 以下是我的代碼:

web.php Url Manager規則

'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);
    }

}

但是當我將GET請求發送到http://{url}//api/v1/auth/payment/5我的回復為5 但是我希望在發送POST或任何其他方法時獲得該結果。

那我怎么能實現呢?

讓我告訴你我是如何為我的應用程序解決它

我為基本應用程序設置構建的簡單應用程序結構是。

------ app

------模塊

---------- API

-------------模塊

---------------- V1

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

- - - - - - - - - -楷模

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

您可以先完成應用程序設置。

然后在每個控制器中定義動詞過濾,或者通過在公共類中定義來對其進行排序,就像我在這里所做的那樣

然后使用您在urlManager中定義的相同規則,您將能夠獲取請求查詢參數。

希望這可以幫助。

使用

'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',
];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM