springboot整合knife4j
先导入依赖
<!-- 包含了ui界面 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<!-- 2.x基于springfox2.x,3.x基于springfox3.x-->
<version>3.0.2</version>
</dependency>
配置配置类
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfig {
@Bean
public Docket adminApiConfig(){
List<Parameter> pars = new ArrayList<>();
ParameterBuilder tokenPar = new ParameterBuilder();
tokenPar.name("token")
.description("用户token")
.defaultValue("")
.modelRef(new ModelRef("string"))
.parameterType("header")
.required(false)
.build();
pars.add(tokenPar.build());
//添加head参数end
Docket adminApi = new Docket(DocumentationType.SWAGGER_2)
.groupName("adminApi")
.apiInfo(adminApiInfo())
.select()
//只显示admin路径下的页面 指定controller(接口)扫描的包路径
.apis(RequestHandlerSelectors.basePackage("com.wyl"))
.paths(PathSelectors.regex("/admin/.*"))
.build()
.globalOperationParameters(pars);
return adminApi;
}
private ApiInfo adminApiInfo(){
return new ApiInfoBuilder()
.title("后台管理系统-API文档")
.description("本文档描述了后台管理系统微服务接口定义")
.version("1.0")
.contact(new Contact("at", "http://at.com", "555555@qq.com"))
.build();
}
}
微服务配置时
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-micro-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
@Component
@Primary
public class SwaggerResourceConfig implements SwaggerResourcesProvider {
@Autowired
private RouteLocator routeLocator;
private SwaggerResource swaggerResource(String name, String location) {
SwaggerResource swaggerResource = new SwaggerResource();
swaggerResource.setName(name);
swaggerResource.setLocation(location);
//这个配置影响不大
swaggerResource.setSwaggerVersion("3.0");
return swaggerResource;
}
@Override
public List<SwaggerResource> get() {
List<SwaggerResource> resourceList = new ArrayList<>();
//获取所有router
List<Route> routeList = routeLocator.getRoutes();
for (Route route:routeList) {
//排除不需要参与文档聚合的服务
if (!route.getId().equals("monitor-server")){
//第一个参数指定服务名,id是服务名 eg. order-server
//第二个参数指定该服务的文档访问接口 eg. /order-server/v2/api-docs。fullPath是该服务的路由地址 eg. /order-server/**
resourceList.add(swaggerResource(route.getId(), route.getFullPath().replace("/**", "/v2/api-docs")));
}
}
return resourceList;
}
}