Spring应用使用springfox-swagger-ui配置两个不同版本Swagger端点的咨询
springfox-swagger-ui 2.9.2 多版本Swagger入口配置方案
完全可以实现,核心逻辑是通过配置多组Docket划分接口版本,再配合Spring MVC资源映射实现不同路径前缀的Swagger UI访问,具体配置步骤如下:
1. 引入基础依赖
确保pom.xml(Maven)或build.gradle(Gradle)中已引入正确版本的依赖:
<!-- Maven依赖示例 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency>
2. 配置多版本Docket分组
新增Swagger配置类,定义两个Docket实例分别对应v1、v2版本的接口:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 public class SwaggerConfig implements WebMvcConfigurer { // v1版本接口Docket配置 @Bean public Docket docketV1() { return new Docket(DocumentationType.SWAGGER_2) .groupName("v1") .select() // 替换为你自己的v1接口包路径,或者用paths匹配/v1/**的接口 .apis(RequestHandlerSelectors.basePackage("com.yourpackage.api.v1")) .paths(PathSelectors.ant("/api/v1/**")) .build(); } // v2版本接口Docket配置 @Bean public Docket docketV2() { return new Docket(DocumentationType.SWAGGER_2) .groupName("v2") .select() // 替换为你自己的v2接口包路径,或者用paths匹配/v2/**的接口 .apis(RequestHandlerSelectors.basePackage("com.yourpackage.api.v2")) .paths(PathSelectors.ant("/api/v2/**")) .build(); } // 配置Swagger UI资源映射,支持自定义前缀路径访问 @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // 映射v1路径的swagger资源 registry.addResourceHandler("/api/v1/swagger-ui.html**") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/api/v1/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); // 映射v2路径的swagger资源 registry.addResourceHandler("/api/v2/swagger-ui.html**") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/api/v2/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); } }
3. 验证访问
启动Spring应用后直接访问以下两个地址即可分别进入对应版本的Swagger文档页:
/api/v1/swagger-ui.html:仅展示v1版本接口/api/v2/swagger-ui.html:仅展示v2版本接口
注意事项
- 如果你的接口前缀规则不同,可自行调整Docket配置中
paths的匹配规则 - 若项目配置了全局接口前缀、权限拦截,需要将
/v2/api-docs、/api/v1/**、/api/v2/**的Swagger相关路径加入放行名单 - 2.9.2版本本身兼容该配置,不需要额外引入其他第三方依赖
内容的提问来源于stack exchange,提问作者Alexey
相关产品推荐
相关产品推荐

