Laravel集成Swagger后新增路由404且route:list不显示问题求助
Laravel新增路由不生效、route:list无记录解决方案
- 排查路由文件加载配置
打开app/Providers/RouteServiceProvider.php,确认你写入新增路由的文件(比如routes/web.php/routes/api.php或者自定义路由文件)已经在该Provider中完成注册。如果是自定义路由文件,需要添加对应的加载代码,示例如下:// 示例:加载自定义路由文件 Route::middleware('web') ->group(base_path('routes/custom.php')); - 清除路由缓存
Laravel会在开启路由缓存的环境下优先读取缓存的路由列表,新增路由不会自动更新到缓存中,执行以下命令清理路由缓存即可:
如果你使用了Laravel Octane常驻服务,还需要执行php artisan route:clearphp artisan octane:reload重启服务加载新路由。 - 排查路由定义冲突或语法错误
- 带参数的路由要放在同路径固定路由的后面,避免参数匹配拦截了固定路由,比如
/user/profile要放在/user/{id}前面定义 - 检查路由的请求方式、前缀、中间件限制是否和你访问的地址匹配,比如默认API路由都带有
/api前缀,直接访问不带前缀的地址会返回404 - 排查路由绑定的控制器、方法是否存在,是否有语法错误导致路由文件加载失败
- 带参数的路由要放在同路径固定路由的后面,避免参数匹配拦截了固定路由,比如
- 确认Swagger注解和实际路由的一致性
Swagger文档是根据你写的注解生成的,和实际加载的路由没有关联,所以会出现注解写了就显示在文档里,但实际路由未加载的情况,只要实际路由正常加载后即可正常访问。 - 确认文件同步正常
如果是服务器/容器环境运行的项目,确认你本地修改的路由文件已经正确同步到运行环境中,避免改了本地文件但环境里还是旧版本的问题。
内容的提问来源于stack exchange,提问作者Ahmed Rajab
相关产品推荐
相关产品推荐

