如何在Gateway 集成 Knife4j 进行接口文档聚合

介绍

本章主要介绍在网关中,如何聚合多个其他服务通过Knife4j + swagger生成的接口文档。其他子服务如何实现接口文档的生成不再赘述请参考官方文档。

参考:

Spring Cloud Gateway网关下的文档聚合?就用它了 | Knife4j 4.1 手动聚合

依赖引入

xml
复制代码
<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-gateway-spring-boot-starter</artifactId> <version>4.4.0</version> </dependency>

配置文件修改

yaml
复制代码
spring: cloud: gateway: routes: - id: api-user uri: http://localhost:8082 predicates: - Path=/api-user/** - id: api-interfaces uri: http://localhost:8083 predicates: - Path=/api-interfaces/** knife4j: #聚合swagger文档 gateway: enabled: true # 排序规则(tag/operation排序自4.2.0版本新增) # 取值:alpha-默认排序规则,官方swagger-ui默认实现,order-Knife4j提供的增强排序规则,开发者可扩展x-order,根据数值来自定义排序 tags-sorter: order operations-sorter: order # 指定手动配置的模式(默认为该模式) strategy: manual routes: - name: 用户服务 # 真实子服务访问url地址-提供OpenAPI的文档 url: /api-user/v2/api-docs?group=default service-name: api-user order: 2 - name: API接口服务 url: /api-interfaces/v2/api-docs?group=default service-name: api-interfaces order: 3

验证

启动网关服务,访问doc.html,切换服务进行验证

你可能会遇到的问题

1. 可以进入,但无接口信息

首先请先验务真实子服务访问url地址是否可以访问,获取到接口文档的json数据。

以上述我修改的配置文件为例: 用户服务需要测试 http://localhost:网关端口/api-user/v2/api-docs?group=default 是否可以访问。

API接口服服务需要测试http://localhost:网关端口/api-interfaces/v2/api-docs?group=default` 是否可以访问。

不可访问请再验证通过子服务的端口访问文档是否访问的通

如访问的通,大概率是被你的鉴权框架,或过滤器拦截了,可以检查你相关的配置。

需要开放以下地址,仅供参考:我的子服务都i有前缀所以增加了/*,如你的服务无前缀则无需增加。

text
复制代码
//接口文档相关 "/*/doc.html" , "/*/webjars/**" , "/*/swagger-resources/**" , "/*/v2/api-docs" , "/*/v3/api-docs" , "/*/v3/api-docs/**" , "/*/swagger-ui/**" , "/*/swagger-ui.html" , "/*/favicon.ico"
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
睿智
下载 APP