背景

在之前老顾的文章中,介绍过利用swagger实现api文档,我们每个 微服务都有自己的一套 api接口,那我们开发人员进行开发的时候,是需要打开很多api接口文档地址,太麻烦了,那能不能只打开一个接口地址,此地址聚合了下游服务的所有api接口文档地址

微服务Api接口配置

pom依赖包

网关如何聚合各个微服务的接口文档?_多版本

Swagger配置

网关如何聚合各个微服务的接口文档?_接口文档_02

网关如何聚合各个微服务的接口文档?_接口文档_03

网关如何聚合各个微服务的接口文档?_微服务_04

上面的配置不单单支持了接口文档,而且还只是多版本的接口文档配置,当然需要一些定制代码,看下面

接口版本

网关如何聚合各个微服务的接口文档?_多版本_05

接口版本定义

网关如何聚合各个微服务的接口文档?_接口文档_06

配置使用

网关如何聚合各个微服务的接口文档?_微服务_07

加入@ApiVersion注解就能够实现多版本了

上面的配置就是每个微服务的接口文档配置

注意如果有相关授权配置需要把相关的swagger的url地址配置成不需要授权
/doc.html,/swagger-ui.html,/webjars/**,/v2/**,/swagger-resources/**

 网关配置

pom引入依赖包

网关如何聚合各个微服务的接口文档?_微服务_08

因为Swagger暂不支持webflux项目,所以Gateway里不能配置SwaggerConfig,也就是说Gateway无法提供自身API。但一般也不会在网关项目代码里写业务API代码。所以这里的集成只是基于 WebMvc的微服务项目。

网关如何聚合各个微服务的接口文档?_接口文档_09

网关如何聚合各个微服务的接口文档?_多版本_10

上面的代码就是把网关的路由解析出来,然后设置SwaggerResource;多版本的设置是基于/v2/api-docs?group=原理

网关如何聚合各个微服务的接口文档?_多版本_11

配置网关路由

网关如何聚合各个微服务的接口文档?_多版本_12

启动测试

访问网关地址http://localhost:8769/doc.html

网关如何聚合各个微服务的接口文档?_多版本_13

网关如何聚合各个微服务的接口文档?_微服务_14

总结

这样就做到了只要访问网关的api文档地址左上角进行项目接口版本切换。小伙伴有没有注意到文档的界面大有不同,就是引入了

<dependency>
   <groupId>com.github.xiaoymin</groupId>
   <artifactId>swagger-bootstrap-ui</artifactId>
   <version>1.9.3</version>
</dependency>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

这个UI左右结构,非常方便,小伙伴可以自行体验一下哦。