Как изменить метод запроса в правилах пользовательского 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 или любыми другими методами.Так как же я могу этого достичь?
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