如何配置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
相关产品推荐
相关产品推荐

