Если вы все правильно настроили и добавили новый псевдоним api
в файл common/bootstrap.php
, например Yii::setAlias('api', dirname(dirname(__DIR__)) . '/api');
, вам нужно определить правила в urlManager
, чтобы получить доступ к конкретному действию контроллера внутри вашего api/config/main.php
.
Например, у меня есть контроллер внутри api/modules/v1/controller/
с именем Lead
и у меня есть два действия с именами actionTest()
и actionLists()
, и я хочу иметь возможность отправить POST
запрос на actionLists()
и GET
запрос на actionTest()
, тогда я определю их в UrlManager
, как показано ниже
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'rules' => [
[
'class' => 'yii\rest\UrlRule',
'pluralize' => false,
'controller' => 'v1/lead',
'tokens' => [
'{id}' => '<id:\\w+>'
],
'extraPatterns' => [
'POST create' => 'create',
'GET test' => 'test'
]
],
]
]
Теперь я могу отправить POST
запрос на http://example.com/api/v1/lead/list
и GET
запрос к http://example.com/api/v1/lead/test?id=1234
Примечание: обратите внимание на 'pluralize'=>false
для правила, если не установлено, вы заметите, что идентификатор контроллера lead
отображается во множественном числе как leads
в URL-адресах конечной точки.Это связано с тем, что yii\rest\UrlRule
автоматически множит идентификаторы контроллера при создании дочерних правил URL.Вы можете отключить это поведение, установив yii\rest\UrlRule::$pluralize
в значение false.