Как изменить метод запроса в правилах пользовательского URL-адреса Yii2 с GET на POST и другие?



Я пытаюсь работать в RESTfull web services в Yii2, используя контроллер по умолчанию. Но проблема, с которой я столкнулся, заключается в том, что я не могу отправить POST-запрос с параметрами.
Ниже приведен мой код:



Правило диспетчера Url в web.php



'urlManager' => [
'class' => 'yiiwebUrlManager',
// 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 appcontrollersapiv1;

use appcontrollersapiv1componentsApiFunctions;
use Yii;
use yiiwebController;


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 или любыми другими методами.

Так как же я могу этого достичь?
787   2  

2 ответов:

Позвольте мне показать вам, как я решаю его для моего приложения.

Простая структура приложения, которую я построил для базовой настройки приложения, была.

------ app

------модули

----------api

-------------модули

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

-------------------контроллеры

-------------------модели

-------------------etc

Вы можете просто пройти через установку приложения в первую очередь.

Затем определите фильтрация глаголов в каждом контроллере или сортировка их путем определения в общем классе, как я сделал здесь.

Тогда с помощью того же правила, которое вы определили в urlManager, вы сможете получить параметр запроса request.

Надеюсь, это поможет.

Использовать

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

Comments

    Ничего не найдено.