Spring Cloud 整合Swagger 统一服务api
Posted 风某人~Wind
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud 整合Swagger 统一服务api相关的知识,希望对你有一定的参考价值。
Swagger整合多个微服务统一API接口文档
单系统Spring Boot 整合Swagger或者 Swagger注解介绍 请看另一篇文章
准备工具
1. 自己搭建准备好微服务环境
2. 里面至少包含一个注册中心,一个网关,两个其他服务
当前演示的测试环境配置
1个注册中心(eureka)、1个网关(zuul)、和user-consumer、user-provider 两个服务
开搞!
1. 引入依赖
在除了注册中心里面的所有的服务都引入依赖
<!--引入swagger API服务-->
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>1.9.0.RELEASE</version>
</dependency>
2. 配置网关
在网关的服务下,创建DocumentationConfig 类
在get() 方法中,List里面添加需要展示API接口的服务
resources.add(swaggerResource("分组名称", "/服务名称/v2/api-docs", "版本号"));
/**
* @Auther: wan
* @Date: 2021/4/8 16:12
* @Description:
* @version: 1.0
*/
@Component
@Primary
public class DocumentationConfig implements SwaggerResourcesProvider
@Override
public List<SwaggerResource> get()
List resources = new ArrayList<>();
resources.add(swaggerResource("user-consumer系统", "/user-consumer/v2/api-docs", "1.0.0"));
resources.add(swaggerResource("user-provider系统", "/user-provider/v2/api-docs", "1.0.0"));
return resources;
private SwaggerResource swaggerResource(String name, String location, String version)
SwaggerResource swaggerResource = new SwaggerResource();
swaggerResource.setName(name);
swaggerResource.setLocation(location);
swaggerResource.setSwaggerVersion(version);
return swaggerResource;
然后在创建SwaggerConfig 类,这个类需要在网关服务,user-consumer、user-provider 服务下都得配置,所有需要在Swagger中展示的API服务都得加
@Bean public Docket createRestApi() return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.wan.userprovider"))//指定当前服务扫描的包路径 .build();
private ApiInfo apiInfo() return new ApiInfoBuilder() .title("标题") .description("服务接口描述") .termsOfServiceUrl("http://localhost:8003") .contact(new Contact("vker", "", "6492178@gmail.com")) .version("版本号") .build();
代码示例:
/**
* @Auther: wan
* @Date: 2021/4/8 15:58
* @Description: com.wan.zuulserver.config
* @version: 1.0
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig
@Bean
public Docket createRestApi()
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.wan.userprovider"))//指定包路径
.build();
private ApiInfo apiInfo()
return new ApiInfoBuilder()
.title("user-provider")
.description("user-provider系统接口文档说明")
.termsOfServiceUrl("http://localhost:8003")
.contact(new Contact("vker", "", "6492178@gmail.com"))
.version("1.0.0")
.build();
@Bean
UiConfiguration uiConfig()
return new UiConfiguration(null, "list", "alpha", "schema",
UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS, false, true, 60000L);
配置如下
依赖引入:网关服务、user-consumer、user-provider 服务
SwaggerConfig 类:网关服务、user-consumer、user-provider 服务
DocumentationConfig:网关服务
接下来运行项目,看效果:
以上是关于Spring Cloud 整合Swagger 统一服务api的主要内容,如果未能解决你的问题,请参考以下文章
如何Spring Cloud Zuul作为网关的分布式系统中整合Swagger文档在同一个页面上
Spring Cloud Zuul中使用Swagger汇总API接口文档