douci4026
2015-02-15 18:12
浏览 731
已采纳

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

I am trying to work in RESTfull web services in Yii2 using default controller. But the problem I faced is, I cannot send POST request with parameters. Below is my code:

Url Manager rule in 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 file this is inside 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);
    }

}

But when I send GET request to http://{url}//api/v1/auth/payment/5 I get response as 5. But I want to get that result when sending POST or any other methods.

So how can I achieve that?

图片转代码服务由CSDN问答提供 功能建议

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

web.php 中的Url Manager规则

 'urlManager'=&gt;  [
'class'=&gt;  'yii \ web \ UrlManager',
 //禁用index.php 
'howScriptName'=&gt;  false,
 //禁用r = routes 
'enablePrettyUrl'=&gt; 是的,
'规则'=&gt; 数组(
 ['pattern'=&gt;'api / v1 / auth / payment /&lt; id:\ d +&gt;','route'=&gt;'api / v1 / auth / payment'],
  '&lt; controller:\ w +&gt; /&lt; id:\ d +&gt;'=&gt;'&lt; controller&gt; / view',
'&lt; controller:\ w +&gt; /&lt; action:  \ w +&gt; /&lt; id:\ d +&gt;'=&gt;'&lt; controller&gt; /&lt; action&gt;',
'&lt; controller:\ w +&gt; /&lt; action:\ w  +&gt;'=&gt;'&lt; controller&gt; /&lt; action&gt;',
),
 
,
   
 
 

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-&gt; getRequest() - &gt; getQueryParam('id'); 
 json_encode($ id); 
} 
 
} 
   
 
  

但是当我将 GET 请求发送到 http:// {url} // api / v1 / auth / payment / 5 时,我得到了r 响应为 5 。 但是我希望在发送 POST 或任何其他方法时得到这个结果。

那么我该如何实现呢?

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

相关推荐 更多相似问题