Spring Cloud Gateway 集成Springdoc OpenAPI3 微服务项目
前言
因为openapi3没有提供像swagger2一样的SwaggerResource来进行配置,所以要想在springcloud gateway中集成微服务项目的接口文档,那就需要另辟蹊径
方法
一、
1、配置类,也可以直接在yaml配置文件中配置
@Configuration
@Slf4j
public class SwaggerConfig {
// gateway项目接口文档
@Bean
public GroupedOpenApi gatewayApi() {
String[] paths = {"/**"};
String[] packagedToMatch = {"com.example.gateway"};
return GroupedOpenApi.builder().group("v3/api-docs")
.pathsToMatch(paths)
/*.addOperationCustomizer((operation, handlerMethod) -> {
return operation.addParametersItem(new HeaderParameter().name("groupCode").example("测试").description("集团code").schema(new StringSchema()._default("BR").name("groupCode").description("集团code")));
})*/
.packagesToScan(packagedToMatch).build();
}
// 相关微服务项目service1接口文档
@Bean
public GroupedOpenApi service1Api() {
String[] paths = {"/micro-service1/**"};
String[] packagedToMatch = {"com.example.service1"};
return GroupedOpenApi.builder().group("service1/v3/api-docs")
.pathsToMatch(paths)
.packagesToScan(packagedToMatch).build();
}
// 相关微服务项目service2接口文档
@Bean
public GroupedOpenApi service2Api() {
String[] paths = {"/micro-service2/**"};
String[] packagedToMatch = {"com.example.service2"};
return GroupedOpenApi.builder().group("service2/v3/api-docs")
.pathsToMatch(paths)
.packagesToScan(packagedToMatch).build();
}
@Bean
public OpenAPI customOpenApi() {
return new OpenAPI()
.info(new Info()
.title("网关系统API")
.version("1.0")
.description("网关系统API")
.termsOfService("http://www.xxx.com")
.license(new License().name("Apache 2.0")
.url("http://www.xxx.com")));
}
}
注意:上面的配置文件在每一个微服务中也要配置自己对应的GroupedOpenApi 和 OpenAPI的bean
2、application.yml配置文件中
spring:
cloud:
gateway:
routes:
- id: openapi-service
uri: http://www.xxx.com
predicates:
- Path=/v3/api-docs/**
filters:
- StripPrefix=2