v4.3.0版本-2023/08/06
大家好,Knife4j v4.3.0版本发版,本次版本发版主要解决问题:
更新日志
4.3.0版本主要解决在Spring Cloud Gateway网关组件下聚合Swagger2或者OpenAPI3提供最简单的配置,简化开发者工作。
最简单的配置如下(4个配置属性完成所有子服务的网关聚合):
knife4j:
gateway:
enabled: true
strategy: discover
discover:
# 聚合所有子服务(swagger2规范),子服务是3规范则替换为openapi3
version: swagger2
enabled: true
优化knife4j-gateway
组件
1、在gateway网关聚合服务中,排除其他服务支持正则表达式
knife4j:
gateway:
enabled: true
strategy: discover
discover:
version: swagger2
enabled: true
excluded-services:
# 排除order开头的配置
- order.*
2、聚合子服务时,两个子服务是根路由转发时只聚合单个服务的bug(主要是order
排序属性导致)
3、启用DisocverClient
作为网关默认转发路由场景下聚合失败的问题
4、针对Swagger2规范聚合失败的问题
5、在手动聚合模式(manual)下同时支持swagger2
和openapi3
规范的聚合
knife4j:
gateway:
enabled: true
strategy: manual
routes:
# swagger2
- name: 订单openapi2
service-name: user-service
url: /order-service-openapi2/v2/api-docs?group=default
context-path: /
# openapi3
- name: 订单openapi3
service-name: order-service
url: /order/v3/api-docs/default
context-path: /order
6、在子服务全部是swagger2规范情况下contextPath路径错误的问题
7、优化knife4j-gateway
的部分代码结构及聚合场景,目前聚合子服务路由在服务发现(discover
)模式下主要4种模式,主要包括:
- 基于Spring Cloud Gateway配置的routes规则解析子服务路由,数据来源:
spring.cloud.gateway.routes
- 在discover服务发现场景下,针对自定义添加的routes,默认再次追加,数据来源:
knife4j.gateway.routes
- 服务发现discover模式下,开发者在网关成的路由转发模式默认通过
DiscoveryClient
的默认方式转发路由,规则是pattern:/service-id/**
- 接收编码方式动态注入Spring Cloud Gateway网关的路由,进行聚合转发
其他部分
1、修复@ApiSupport
注解不生效的问题Gitee#PR89
2、数据存在枚举值时,SwaggerModel无法正常展开Gitee#PR90
3、解决组件冲突的问题GitHub#630
4、增加title属性的支持Gitee#I7KUYP
感谢
非常感谢以下开发者的PR贡献(排名不分先后):