簡體   English   中英

如何修復 REST API 路由中未找到的錯誤

[英]How to fix not found error in REST API route

我正在嘗試使用Yii2 Advanced框架創建REST API應用程序。 但是在啟動時我有一個錯誤:

{"name":"Not Found","message":"Page not found.","code":0,"status":404,"type":"yii\\web\\NotFoundHttpException"}

在瀏覽器中,我使用這個 URL 來獲得結果:

https://api.site.com
https://api.site.com/site/index
https://api.site.com/posts/index

在 SiteController.php 中添加site/index路由進行測試:

namespace api\controllers;

use yii\rest\Controller;

class SiteController extends Controller
{
    public function actionIndex()
    {
        return 'api';
    }

}

PostsController.php:

namespace api\controllers;

use yii\rest\ActiveController;

class PostsController extends ActiveController
{

    public $modelClass = 'api\models\Posts';

}

帖子 model:

namespace api\models;

use yii\db\ActiveRecord;

class Posts extends ActiveRecord
{

    public static function tableName(): string
    {
        return '{{%posts}}';
    }

    public function rules(): array
    {
        return [
            [['user', 'keywords', 'description', 'created_at', 'updated_at', 'alias', 'title', 'excerpt', 'content'], 'required'],
            [['alias'], 'unique'],
            [['category', 'user', 'status', 'ready'], 'integer'],
            [['created_at', 'updated_at', 'tags', 'keywords', 'description', 'alias', 'title', 'excerpt', 'content', 'source', 'meta'], 'string'],
            [['alias', 'title'], 'string', 'min' => 3],
            [['keywords', 'description', 'alias', 'title', 'excerpt'], 'string', 'max' => 255],
            ['thumbnail', 'required', 'message' => 'Image is required'],
        ];
    }

}

應用程序的配置:

return [
    'id' => 'app-api',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log'],
    'controllerNamespace' => 'api\controllers',
    'modules' => [],
    'components' => [
        'request' => [
            'parsers' => [
                'application/json' => 'yii\web\JsonParser',
            ],
        ],
        'response' => [
            'class' => 'yii\web\Response',
            'format' => 'json',
        ],
        'user' => [
            'identityClass' => 'common\models\Usermeta',
            'enableAutoLogin' => true,
            'identityCookie' => [
                'name' => '_identity-api',
                'httpOnly' => true,
            ],
        ],
        'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'urlManager' => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => true,
            'showScriptName' => false,
            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' => 'posts'],
                '<controller><action>' => '<controller><action>',
            ],
        ],
    ],
];

我不再知道該去哪里了解問題所在。 錯誤在哪里? 如何解決?

嘗試刪除 urlManager 中'<controller><action>' => '<controller><action>' ,因為例如路由https://api.site.com/site/indexhttps://api.site.com/posts/index默認會調用 PostController 或 SiteController 的 indexAction。 也許它是錯誤的路由配置,所以它找不到你的 controller 類。

或者嘗試將規則編輯成這樣'<controller>/<action>' => '<controller>/<action>'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM