You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置yiisoft/swagger路由?遇配置错误求解决

解决方案

1. 路由配置的正确位置与写法

在使用yiisoft/router的Yii 3项目中,config/routes.php不能直接返回Route实例,而是需要返回一个接收RouteCollectorInterface的闭包,通过该实例完成路由注册。正确写法如下:

use Yiisoft\Router\RouteCollectorInterface;
use App\Controller\HealthCheckController;
use Yiisoft\Swagger\SwaggerController;

return static function (RouteCollectorInterface $routes) {
    // 注册健康检查路由
    $routes->get('/health-check')->action([HealthCheckController::class, 'index']);
    
    // 注册Swagger相关路由(按需添加)
    $routes->get('/swagger')->action([SwaggerController::class, 'index']);
    $routes->get('/swagger/json')->action([SwaggerController::class, 'json']);
};

2. 报错原因分析

你之前直接在routes.php中返回Route::get('/health-check')->action(...)的实例,框架会将其识别为URL规则处理,但Yiisoft\Router\Route类并未实现UrlRuleInterface接口,因此抛出yii\base\InvalidConfigException异常。

3. 必要依赖确认

yiisoft/router是路由抽象层,需要搭配具体实现包才能正常工作,确保已安装:

composer require yiisoft/router-fastroute

内容的提问来源于stack exchange,提问作者Mateusz_Procner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 03:27:07