首页 > 解决方案 > 无效路由:无法解析请求 Yii2 Rest

问题描述

我正在配置Yii2 RestAPI 应用程序。

这是我的 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'
    ]
],

标签: restapiyii2

解决方案


推荐阅读