Swagger文档多路由配置异常:两个路由文件夹仅第二个生效求助
检查路由前缀冲突
确认/v1/route和/v2/route的前缀未被全局中间件或其他配置覆盖。部分框架会默认设置统一前缀,可能导致后注册的路由覆盖前一个,需保证两个路由组的前缀完全独立、无重叠。验证路由注册顺序
多数框架中路由注册顺序影响匹配优先级,若先注册了范围更广的通配符路由,可能拦截/v1/route的请求。确保先注册/v1/route再注册/v2/route,或排查是否存在提前匹配请求的通配符路由。修正Swagger的basePath配置
每个路由文件夹内的Swagger配置若设置了相同的basePath(比如都设为/),会导致文档合并时覆盖。需分别给route1设置basePath为/v1/route,route2设置为/v2/route,且路由注册时对应该前缀。确认路由注册方式正确性
以Express为例,需使用app.use('/v1/route', require('./route1'))和app.use('/v2/route', require('./route2'))的方式分别挂载,避免重复使用同一路由实例或错误挂载到同一路径。若使用Swagger UI,需确保每个文档的url参数指向正确的swagger.json路径,比如/v1/route/swagger.json和/v2/route/swagger.json。排查中间件或拦截器影响
全局中间件(如权限校验、日志中间件)可能拦截特定前缀的路由,导致/v1/route的请求无法到达处理函数。可临时禁用全局中间件,测试两个路由是否正常访问,再逐步排查问题中间件。检查服务启动配置
确认两个路由都正确挂载到同一服务实例,而非启动了端口冲突的两个服务。可通过打印路由列表(如Express的app._router.stack)查看所有注册路由,确认/v1/route和/v2/route均存在。
内容的提问来源于stack exchange,提问作者Dev

