如何配置Swagger,避免请求路径中嵌入v2/api-docs?
解决Swagger请求路径自动添加v2/api-docs的问题
1. Springfox Swagger2(旧版本)配置
要是你用的是Springfox的Swagger2依赖,核心是在Docket配置里指定正确的根路径,覆盖默认的v2/api-docs前缀:
@Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("com.your.package")) // 替换成你的接口包路径 .paths(PathSelectors.any()) .build() .pathMapping("/") // 关键设置:把基础路径设为根路径,避免自动拼接v2/api-docs .apiInfo(apiInfo()); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("你的API文档") .version("1.0") .build(); } }
另外检查配置文件,别留错误的路径设置:
- 打开
application.properties或application.yml,删掉这类强制指定swagger路径的配置:# 要删掉的错误配置示例 # springfox.documentation.swagger.v2.path=/v2/api-docs
2. SpringDoc OpenAPI 3(新版本)配置
如果用的是替代Springfox的SpringDoc新版,直接在OpenAPI配置里指定服务器基础URL:
@Configuration public class OpenApiConfig { @Bean public OpenAPI customOpenAPI() { return new OpenAPI() .servers(List.of(new Server().url("/"))) // 设置根路径作为服务器基础URL .info(new Info().title("你的API文档").version("1.0")); } }
也可以用配置文件来设置:
springdoc: swagger-ui: path: /swagger-ui.html api-docs: path: /v3/api-docs server: base-path: / # 指定基础路径为根路径
3. 额外要检查的点
- 确认你的应用上下文路径(context-root)配置正确,比如应用部署在
/my-app下,就把上面配置里的/改成/my-app - 清一下浏览器缓存,防止Swagger UI加载旧的配置缓存
- 排查下有没有拦截器或网关修改请求路径,确保Swagger生成的路径不会被额外拼接
内容的提问来源于stack exchange,提问作者stanlick
相关产品推荐
相关产品推荐

