在使用Spring Cloud Gateway网关聚合文档时发现网上的都是一些比较老的方法要写各种配置,比较麻烦,没有关于最新的Knife4j4.0相关聚合教程就自己研究了一下,记录一下整合的过程。
子项目整合文档
1.添加Knife4j依赖到子项目中
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.3.0</version>
</dependency>
2.在对应模块下的application.yml添加配置
# springdoc-openapi项⽬配置
springdoc:
swagger-ui:
path: /swagger-ui.html
tags-sorter: alpha
operations-sorter: alpha
api-docs:
path: /v3/api-docs
group-configs:
- group: 'default'
paths-to-match: '/**'
#这里的包扫描路径换成自己的路径
packages-to-scan: top.lsc.share.content.controller#需要更换
# knife4j的增强配置,不需要增强可以不配
knife4j:
enable: true
setting:
language: zh_cn
3.使⽤OpenAPI3的规范注解,注释各个Spring的REST接⼝
4.启动子模块查看文档
访问Knife4j的文档地址:http://ip:port/doc.html
即可查看文档
聚合文档到网关
1.添加Knife4j依赖到网关中
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.3.0</version>
</dependency>
2.在网关模块中添加application.yml配置
knife4j:
gateway:
# ① 第⼀个配置,开启gateway聚合组件
enabled: true
# ② 第⼆⾏配置,设置聚合模式采⽤discover服务发现的模式
strategy: discover
discover:
# ③ 第三⾏配置,开启discover模式
enabled: true
# ④ 第四⾏配置,聚合⼦服务全部为OpenAPI3规范的⽂档
version: OpenAPI3
配置属性说明:
配置属性名称 | 类型 | 描述 | 默认值 |
knife4j.gateway.enabled | boolean | 是否开启使用Gateway网关聚合组件 | false |
knife4j.gateway.strategy | enum | 聚合的策略,主要支持两种,分别是手动配置(manual )、服务发现(discover | manual |
knife4j.gateway.routes | array{Router} | 通过路由注册文档 | |
knife4j.gateway.routes[0].name | string | 界面显示分组名称 | null |
knife4j.gateway.routes[0].url | string | 文档地址 | 子服务的Swagger资源接口地址(Swagger2默认/v2/api-docs,只需要配置group参数即可),因为是从网关层走,开发者配置时别忘记了网关前缀地址。 |
knife4j.gateway.routes[0].service-name | string | 访问服务名称 | null |
knife4j.gateway.routes[0].order | int | 排序 | 0 |
knife4j.gateway.routes[0].context-path | string | 路由前缀,根据实际情况自行配置 | / |
3.运⾏查看效果
访问地址:http://网关host:网关端口/doc.html
可以看到子模块的接口文档已经汇聚成功~