spring boot大军中,相信大家目前已经使用了swagger文档,最近发现一个问题就是由于接口数量较多,如果全部分布在一个页面显示效果会十分不友好。
主角 swagger-bootstrap-ui 是基于swagger-ui进行了改造,是Swagger的前端UI实现,目的是替换Swagger默认的UI实现Swagger-UI,使文档更友好一点儿。
这里提供两种swagger接口文档的优化方案:
1.springboot 2.2.0.M3 集成 swagger 的 bootstrap-ui 风格。
2.接口分类管理,一般分APP管理接口,模板管理接口,后台管理接口三大类。
先来个效果图吧:
大致就是这样分出三个大类,不管是后台人员测试也好,测试人员测试也好,亦或者移动端,h5端对接也好,也是非常友好的。
上代码:
在pom.xml导入依赖包
<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>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.3</version>
</dependency>
继续上swagger的config类,实现接口分类管理
@EnableSwagger2
@Configuration
public class Swagger2 {
@Bean
public Docket baseApi() {
return new Docket(DocumentationType.SWAGGER_2).groupName("模板接口").apiInfo(apiBaseInfo()).select().apis(RequestHandlerSelectors.basePackage("com.swagger.www"))
.paths(PathSelectors.regex(".*/base/.*")).build();
}
private ApiInfo apiBaseInfo() {
return new ApiInfoBuilder().title("模板接口文档").description("模板接口文档").termsOfServiceUrl("").version("1.0").build();
}
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2).groupName("APP管理接口").apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.swagger.www"))
.paths(PathSelectors.regex(".*/api/.*")).build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("API文档").description("API文档").termsOfServiceUrl("").version("1.0").build();
}
@Bean
public Docket backApi() {
return new Docket(DocumentationType.SWAGGER_2).groupName("后台管理接口").apiInfo(apiBackInfo()).select().apis(RequestHandlerSelectors.basePackage("com.swagger.www"))
.paths(PathSelectors.regex(".*/back/.*")).build();
}
private ApiInfo apiBackInfo() {
return new ApiInfoBuilder().title("后台管理接口").description("后台管理接口实现的文档").termsOfServiceUrl("").version("1.0").build();
}
}
swagger-bootstrap-ui 只是Swagger的UI实现,并不是替换Swagger功能,所以后端模块依然是依赖Swagger的,其他就还是老样子。