SpringBoot Swagger2+拦截器配置
1、集成原生的swagger-ui配置
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
1.1、配置类
@Configuration
@EnableSwagger2
public class SwaggerConfog {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.xxx.controller"))
.paths(PathSelectors.any())
.build();
}
public ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("xxxxxAPI说明")
.description("xxxxxAPI说明")
.version("1.0")
.termsOfServiceUrl("localhost:8200/xxx/swagger-ui.html") //xxx是context-path路径,不加也可以
.contact(new Contact("xxxxxxx公司",null,null))
.build();
}
1.2、拦截器放行的路径
@Configuration
public class ResourceInterceptor implements WebMvcConfigurer {
private final String [] excludeUrl = {"/swagger-ui.html/**","/swagger-resources/**","/v2/**"};
@Autowired
private HandlerInterceptorConfig handlerInterceptorConfig;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(handlerInterceptorConfig)
.addPathPatterns("/**")
.excludePathPatterns(excludeUrl);
}
}
2、集成bootstrap-ui配置
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
2.1、配置类
@Configuration
@EnableSwagger2
public class SwaggerConfog {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.xxx.controller"))
.paths(PathSelectors.any())
.build();
}
public ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("xxxxxAPI说明")
.description("xxxxxAPI说明")
.version("1.0")
.termsOfServiceUrl("localhost:8200/xxx/doc.html") //xxx是context-path路径,不加也可以
.contact(new Contact("xxxxxxx公司",null,null))
.build();
}
2.2、拦截器放行的路径
@Configuration
public class ResourceInterceptor implements WebMvcConfigurer {
private final String [] excludeUrl = {"/doc.html/**","/swagger-resources/**","/v2/**"};
@Autowired
private HandlerInterceptorConfig handlerInterceptorConfig;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(handlerInterceptorConfig)
.addPathPatterns("/**")
.excludePathPatterns(excludeUrl);
}
}
3、集成layer-ui配置
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>com.github.caspar-chen</groupId>
<artifactId>swagger-ui-layer</artifactId>
<version>1.1.3</version>
</dependency>
3.1、配置类
@Configuration
@EnableSwagger2
public class SwaggerConfog {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.xxx.controller"))
.paths(PathSelectors.any())
.build();
}
public ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("xxxxxAPI说明")
.description("xxxxxAPI说明")
.version("1.0")
.termsOfServiceUrl("localhost:8200/xxx/docs.html") //xxx是context-path路径,不加也可以
.contact(new Contact("xxxxxxx公司",null,null))
.build();
}
3.2、拦截器放行的路径
@Configuration
public class ResourceInterceptor implements WebMvcConfigurer {
private final String [] excludeUrl = {"/docs.html/**","/v2/**"};
@Autowired
private HandlerInterceptorConfig handlerInterceptorConfig;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(handlerInterceptorConfig)
.addPathPatterns("/**")
.excludePathPatterns(excludeUrl);
}
}
注:以上三种配置如果访问出问题,可以添加以下其中一个或者全部在拦截器中配置即可
//以上三种配置如果访问css出不来,可以添加以下其中一个或者全部在拦截器中配置即可
private final String [] excludeUrl = {"/webjars/**","/dist/**"};
注:虚拟路径映射问题
//如果这里添加了addResourceHandlers,一定要放行swagger资源
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//添加了虚拟路径,swagger资源就会拦截,一定要放行swagger资源
registry.addResourceHandler("/image/**").addResourceLocations("file:"+ Constants.HISTORYALARM);
//这里是上面添加了虚拟路径映射,这里一定要放行swagger资源
registry.addResourceHandler("/**").addResourceLocations("classpath:/META-INF/resources/");
}