Я настраиваю Yii2 Rest
приложение API.
Это моя структура каталогов API:
api
├── index.php
├── components
├── config
│ ├── api.php
│ ├── bootstrap.php
│ ├── params.php
│ └── routes.php
├── modules
│ └── v1
│ ├── Module.php
│ └── modules
│ ├── auth
│ │ └── controllers
│ │ └── MainController.php
│ └── Module.php
├── runtime
└── traits
api.php :
...
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
[
'class' => 'yii\rest\UrlRule',
'controller' => [
'v1/auth/main'
],
'extraPatterns' => [
'POST v1/login' => 'login' // For MainController in Auth module
]
],
]
],
...
'modules' => [
'v1' => [
'class' => 'app\api\modules\v1\Module',
// Sub modules for v1 module
'modules' => [
'auth' => [
'class' => 'app\api\modules\v1\modules\auth\Module',
],
],
],
],
...
Что я получаю в почтальоне, когда пытаюсь сделать POST
запрос к http://my.api/v1/login
:
{
"name": "Not Found",
"message": "Page not found.",
"code": 0,
"status": 404,
"type": "yii\\web\\NotFoundHttpException",
"previous": {
"name": "Invalid Route",
"message": "Unable to resolve the request \"v1/login\".",
"code": 0,
"type": "yii\\base\\InvalidRouteException"
}
}
Я знаю, что могу справиться с этой ситуацией, как показано ниже, но это не то, что я хочу:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'POST v1/login' => 'v1/auth/main/login'
]
],