完整的更新日志: https://gitee.com/xiaoym/knife4j/commits/v4.5.0
4.5.0版本主要更新如下:
1、前端i18n增加对日语的支持,感谢一堃通行 ,Gitee#PR98
2、修复EnvironmentPostProcessor中存在defaultProperties与业务冲突的问题,感谢leilei,Gitee#PR100
3、修复addOrderExtension方法报错空指针问题,感谢doublek24Gitee#PR99
4、Spring Boot3 中排序order不生效的问题
5、OpenAPI3规范中未配置springdoc.group-configs.packages-to-scan
属性导致的空指针异常Gitee#I8O7E8
6、实体参数,@Schema
的description属性显示的异常问题Gitee#I8EVO3、Github#690
7、OpenAPI3规范请求类型针对format
属性的展示问题Gitee#I8KRWV
8、自定义文档】多服务聚合后如果服务名包含"-"会导致自定义文档页刷新报错Gitee#I8EKAQ
9、移除文档favicon.ico
的引用Github#716
1、针对eureka注册中心将服务名称转大写的情况,knife4j-gateway聚合失败的处理,感谢DongLiusuoPR贡献Gitee#93
2、debug发送body请求下载的情况下返回文件乱码
3、网关聚合场景下,springdoc子服务默认default地址404的问题优化Gitee#I7RAP7
4、knife4j-gateway组件在boot3中basic密码不兼容的情况#pr652
5、SpringBoot3环境下的javax.filter的兼容性问题修复Github#667
6、OpenAPI3规范下默认无分组情况下显示分组名称的优化
7、修复SecurityDocketUtils对SecurityContext的Reference绑定错误的问题Gitee#I88IYH
8、导出的离线Html文档引用CDN源替换为国内的源Gitee#I8C85P
9、springdoc-openapi版本升级到2.3.0版本
10、spring-EnvironmentPostProcessor中存在defaultProperties与业务冲突的问题,主要是springfox兼容高版本boot的问题修复Github#686
11、针对Authorization不生效的问题请参考博客:OpenAPI3规范中添加Authorization鉴权请求Header不生效?
大家好,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
Maven坐标
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-gateway-spring-boot-starter</artifactId>
<version>4.3.0</version>
</dependency>
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
knife4j.gateway.routes
DiscoveryClient
的默认方式转发路由,规则是pattern:/service-id/**
1、修复@ApiSupport
注解不生效的问题Gitee#PR89
2、数据存在枚举值时,SwaggerModel无法正常展开Gitee#PR90
3、解决组件冲突的问题GitHub#630
4、增加title属性的支持Gitee#I7KUYP
非常感谢以下开发者的PR贡献(排名不分先后):
感兴趣的朋友可以加群参与讨论贡献
关注公众号 "Knife4j",点击菜单获取加群二维码
大家好,Knife4j v4.1.0版本发版,本次版本发版主要解决两个问题:
1、网关聚合组件knife4j-gateway-spring-boot-starter针对OpenAPI3规范聚合时丢失context-path的支持,在ui层面做兼容
2、springdoc-openapi版本升级到最新版本1.6.15、2.0.4 Gitee#I6OIB1
3、knife4j-openapi3-jakarta-spring-boot-starter
模块属性配置在idea不提示的异常情况处理
4、增强属性自定义文档加载分组的bug处理GitHub#PR525
5、knife4j-dependencies
模块漏掉部分依赖模块版本定义的情况
6、解决不添加 springdoc-openapi-ui 依赖异常的问题Gitee#I66YJA**
7、针对OAS3规范中Parameter属性缺失字段说明的异常情况修复
8、针对OAS3规范中扩展属性包括排序、作者等不生效的问题Gitee#I6FB9I
9、部分字段翻译问题GitHub#540
10、使用增强属性开启production
时出现的NPE异常GitHub#527
11、针对OpenAPI3规范的tag名称兼容性问题Gitee#I6JATP
12、实体类接收url参数时文档不显示参数说明的问题Gitee#I6H8CD
13、修复OAS3规范上传组件的识别问题Gitee#I6HAW0、GitHub#538
14、SpringWebflux框架的集成组件starter封装GitHub#521
15、针对Basic验证的特性增加include属性,允许开发者自定义配置GitHub#530
16、全局搜索框支持tag名称的模糊搜索Gitee#I6NWV6
在v4.1.0版本中,继续升级Spring Cloud Gateway网关聚合组件,提供discover
服务发现的模式,自动聚合OpenAPI文档。使用方式更加简单,一个Starter组件+yml配置,即可完成网关层的聚合。
1、引入starter依赖,maven坐标如下:
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-gateway-spring-boot-starter</artifactId>
<version>4.1.0</version>
</dependency>
2、基于discover
模式自动聚合注册中心的文档,则最简洁的配置如下:
更多场景case的使用,可以参考knife4j-gateway-discussions
knife4j:
enable: true
# 指定服务发现的模式聚合微服务文档,并且是默认`default`分组
strategy: discover
discover:
enable: true
# 指定版本号(Swagger2|OpenAPI3)
version : openapi3
如此,我们的聚合工作就完成了。
在浏览器访问Knife4j提供的文档地址:http://ip:网关端口/doc.html
正是由于 4.0 的文档还在输出中,因此 Knife4j 在 4.0 新版本中也提供了不同版本的示例程序
示例如下:
感兴趣的朋友可以加群参与讨论贡献
关注公众号 "Knife4j",点击菜单获取加群二维码
仓库坐标
Knife4j
前身是swagger-bootstrap-ui
,是一个为Swagger接口文档赋能的工具
文档:https://xiaoym.gitee.io/knife4j/
效果(旧版):http://swagger-bootstrap-ui.xiaominfo.com/doc.html
效果(2.X版):http://knife4j.xiaominfo.com/doc.html
Gitee:https://gitee.com/xiaoym/knife4j
GitHub:https://github.com/xiaoymin/swagger-bootstrap-ui
示例:https://gitee.com/xiaoym/swagger-bootstrap-ui-demo
1、在OpenAPI3.0规范中针对下载请求对象显示错误的优化Gitee#I374SP
2、针对OpenAPI3规范中对于binary
类型的format属性,上传组件不显示的问题Gitee#I34NOS、Gitee #I3BRWT
3、OpenAPI3.0规范中Swagger models 中的枚举显示PR #43、Gitee #I3DP8P
4、针对OpenAPI3.0规范权限拦截问题增加接口地址Gitee #I2810R、Gitee #I3HSK4
5、针对OpenAPI3规范支持请求参数中包含$ref
的问题Gitee #I2A89C
6、针对OpenAPI3规范中图片预览的问题优化Gitee #I3IUUQ
1、聚合组件针对Cloud模式转发HTTP请求时,请求头重复导致转发失败的问题Gitee #PR39
2、aggregation聚合组件增加order属性,方便开发者排序设置聚合OpenAPI文档的顺序Gitee #I27ST2
3、aggregation聚合组件Nacos聚合微服务文档支持Nacos用户名及密码访问OpenAPI接口Gitee #I28IF9
4、聚合组件日志打印信息优化,增加isDebugEnabled
逻辑判断,日志级别全部由info
改为debug
级别Gitee #I39QPL
5、聚合组件响应Model不显示的问题Gitee #I3EMZE
6、聚合组件没有正确响应接口的状态码信息PR #44
7、基于Eureka/Nacos
注册中心的聚合组件,增加心跳检测机制(30s/per
),自动剔除已经下线的服务,保证聚合文档的正常访问Gitee #I2CKQT、Gitee #I2CDCK、Gitee #I2KUUY
8、Cloud
模式增加心跳检测机制(30s/per
),自动剔除已经下线的服务,保证聚合文档的正常访问
8、聚合组件转发文件时参数丢失的问题Gitee #I39OXE
1、OAuth2授权Content-Type
的异常问题Gitee#PR35、Gitee#I2CKHA
2、OAuth2判断异常的问题Gitee #PR37
3、修复离线导出Markdown文档自定义文档为undefined
的问题Gitee#I2EDI8、Gitee #I2WCQG
4、日志的打印优化Gitee #I39QPL
5、微服务聚合时basePath
不追加的问题Gitee #I3B5BK、Gitee #I3EEJ3
6、针对List类型示例值多出换行符的问题Gitee #I2D6D4
7、解决Form类型上传参数时传递Null
的问题Gitee #I3AHDQ
8、针对个性化配置的保存问题修改逻辑,开发者通过界面保存个性化配置后丢失的问题Gitee #I27CN8、Gitee #I2CBZQ、Gitee #I2978Y、Gitee #I3IEXT、Gitee #I3Q0MO、Gitee #I3QSAN
9、针对接口分组中不存在API接口时出现链接点击空白的问题处理,如果分组下没有API接口,默认点击显示主页Gitee #I2CVTF
10、OpenAPI规范中tags缺失时导致接口不显示的问题优化,增加default
默认分组Gitee #I27M98
11、针对服务端使用@RequestMapping
注解通过method
限定方法类型时,Ui增强功能过滤不生效的问题Gitee #I28RJ5
12、文件上传类型接口请求数据显示类型错误的情况改进,根据参数设置接口请求数据类型为multipart/form-data
Gitee #I29KMH
13、优化响应html/xml/text
等内容时展现方式Gitee #I2A0QA
14、分组下拉框搜索失效的问题Gitee #I3BAOK
15、优化OpenAPI版本判断的逻辑,根据响应OpenAPI规范JSON再判断获取当前的规范版本,防止出现空异常或Model不显示等问题Gitee #I37X0Q、Gitee #I3EMZE
16、针对JSON
请求格式的提交,增加Beantify
按钮,可以对文本格式化美化的功能Gitee #I39MUP
17、调试发送时增强loading
效果体验Gitee #I3BG5V
18、SwaggerModels 内容太长不会自动换行的问题Gitee #I3QC02
19、针对Map属性的结构展示异常的问题Gitee #I37WB7
20、解决afterScript
特性不能添加多个参数的问题Gitee #I3OJUW
21、优化响应内容判断base64
导致效率低下的问题Gitee #I2VRD5。
22、针对增强注解@ApiOperationSupport
提供的ignoreParameters
属性提供正则模式的忽略策略支持Gitee #I21ZKC
1、构建响应curl时,去除Knife4j自定义添加的部分Header头
2、增加自定义主页的增强配置,开发者可以提供一个Markdown文档,用来自定义Home主页显示的内容Gitee #I24ZXI
knife4j:
enable: true
setting:
# 是否自定义显示Home主页,默认为false
enableHomeCustom: true
# 自定义主页Home的markdown文档路径,只能设置1个,如果设置为目录,则默认取第一个
homeCustomLocation: classpath:markdown/home.md
3、OpenAPI开放接口可以通过增强配置是否显示Gitee #I25273
knife4j:
enable: true
setting:
# 是否显示文档中的Open标签栏,默认为true
enableOpenApi: false
4、搜索框可以通过增强配置是否显示Gitee #I24ZYY
knife4j:
enable: true
setting:
# 是否显示文档中的搜索框,默认为true,即显示
enableSearch: false
5、文档最下边的footerkey通过增强配置是否显示,并且可以自定义显示内容Gitee #I24ZYD
knife4j:
enable: true
setting:
# 是否不显示Knife4j默认的footer,默认为true(显示)
enableFooter: false
# 是否自定义Footer,默认为false(非自定义)
enableFooterCustom: true
# 自定义Footer内容,支持Markdown语法
footerCustomContent: 中国XXX科技股份有限公司版权所有
6、废弃springfox中的控制参数接口/swagger-resources/configuration/ui
,针对是否开启Debug调试,通过Knife4j提供的个性化增强配置进行控制
knife4j:
enable: true
setting:
# 是否显示调试Tab框架,默认为true(显示)
enableDebug: false
7、解决微服务架构下,丢失basePath的问题Gitee #I23NWM、Gitee #I23N6L、Gitee #I25ZTC、GitHub #286
8、自定义文档以及自定义Home主页的Markdown支持Html语法Gitee #I24ZZA
9、去除文档右上角?号的文档显示Gitee #I24ZYL
10、增强配置增加开启动态请求参数配置的配置Gitee #I24EBO
knife4j:
enable: true
setting:
# 开启动态请求参数调试,默认为false(不开启)
enableDynamicParameter: true
11、如果当前服务只有一个分组的情况下,开发者可以通过配置enableGroup
项来控制界面的分组显示Gitee #I25MQG,配置如下:
knife4j:
enable: true
setting:
# Ui界面不显示分组元素
enableGroup: false
最终效果图如下:
12、基础类型的请求参数与响应参数示例显示优化Gitee #I24YKT
13、@ApiOperationSupport
和@DynamicParameters
注解不能同时使用的问题Gitee #I24JWV
14、解决V3版本中starter存在冲突的问题Gitee #I2420J
15、优化markdown渲染的组件方式。
16、离线文档导出移除导出PDF项,导出pdf功能不管是基于markdown或者是word都能轻松实现,因此Knife4j废弃此功能
17、OpenAPI3结构中支持表单类型中scheme解析显示为jsonGitee #I24PCZ
18、针对Authorize标志的接口,添加锁的icon在接口中进行体现Gitee #I23W0S
19、增强配置本地缓存更新策略
20、针对禁用文档管理菜单项后,同步禁用右上角个性化菜单的显示。Gitee #I262VN
21、请求OpenAPI规范实例接口默认发送一个language
的header,如果服务端做了i18n的配置可以根据此header动态返回不同的语言释义。
21、解决根据路径设置界面i18n显示时,和服务端增强配置冲突的问题,如果开发者通过url路径来设置界面的i18n显示,则默认以路径中的为准,否则,取后端增强配置的language
22、菜单收缩时显示存在异常的问题Gitee #I2646F
23、OpenAPI3规范适配支持JSR303支持GitHub #283
24、请求参数的数据类型为空的情况下优化,显示默认值string
Java开发使用Knife4j
目前有一些不同的版本变化,主要如下:
1、如果开发者继续使用OpenAPI2的规范结构,底层框架依赖springfox2.10.5版本,那么可以考虑Knife4j
的2.x版本
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<!--在引用时请在maven中央仓库搜索2.X最新版本号-->
<version>2.0.8</version>
</dependency>
2、如果开发者使用OpenAPI3的结构,底层框架依赖springfox3.0.0,可以考虑Knife4j
的3.x版本
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<!--在引用时请在maven中央仓库搜索3.X最新版本号-->
<version>3.0.2</version>
</dependency>
3、如果开发者底层框架使用的是springdoc-openapi
框架,则需要使用Knife4j
提供的对应版本,需要注意的是该版本没有Knife4j
提供的增强功能,是一个纯Ui。
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-springdoc-ui</artifactId>
<!--在引用时请在maven中央仓库搜索3.X最新版本号-->
<version>3.0.2</version>
</dependency>
自2.0.8
版本开始,Knife4j提供了轻量级的聚合微服务OpenAPI文档的中间件,可以在任意Spring Boot服务中聚合文档,最简单、最轻量级、最方便的聚合组件
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-aggregation-spring-boot-starter</artifactId>
<!--在引用时请在maven中央仓库搜索Knife4jAggregation最新版本号-->
<version>2.0.8</version>
</dependency>
该组件提供了4种不同的模式以满足不同语言、不同模式的方式进行OpenAPI文档的聚合
四种不同的方式:
更详细的介绍以及实战使用方法请参考文档
Knife4j
前身是swagger-bootstrap-ui
,是一个为Swagger接口文档赋能的工具
效果(旧版):http://swagger-bootstrap-ui.xiaominfo.com/doc.html
效果(2.X版):http://knife4j.xiaominfo.com/doc.html
Gitee:https://gitee.com/xiaoym/knife4j
GitHub:https://github.com/xiaoymin/swagger-bootstrap-ui
示例:https://gitee.com/xiaoym/swagger-bootstrap-ui-demo
1、服务端创建Docket对象时配置globalOperationParameters
参数时,header类型不选中或丢失的问题
2、如果服务端写会的json参数中包含base64的图片格式,在响应栏增加图片标签直接显示
3、springfox升级到2.10.5版本后,针对basePath会在解析时自动追加到path节点,因为以前的版本没有追加,所以会导致重复添加basePath的问题。Gitee #I230K8、Gitee #I23G5V
4、导出出md离线文档请求参数部分字段的设置和文档中同步Gitee #I22UFA
5、字段参数说明支持html
标签样式。Gitee #I22RZ2
示例代码:
@ApiModelProperty(value = "奖金名称,记住:<br /><span style=\"color:red\">我很重要</span>",example = "MVP奖杯")
private String name;
效果图:
6、默认去除小蓝点的版本控制,开发者可以通过在服务端通过配置进行开启,详情请参考增强文档。
knife4j:
enable: true
setting:
#是否开启界面中对某接口的版本控制,如果开启,后端接口变化后Ui界面会存在小蓝点
enableVersion: true
7、可以通过配置重命名界面Swagger Models的命名,详情请参考增强文档,例如:
knife4j:
enable: true
setting:
enableSwaggerModels: true
swaggerModelName: 实体类列表
8、可以通过配置是否显示调试栏中的AfterScript
功能,该属性默认为true
,详情请参考增强文档,例如:
knife4j:
enable: true
setting:
enableAfterScript: false
9、支持@RequestMapping
注解中的params
参数Gitee #I22J5Q
10、3.0
版本不支持Authorize
的问题Gitee #I22WVM
11、增加局部刷新变量的按钮功能,可以通过服务端配置开启Gitee #I22XXI,该属性默认为false
,详情请参考增强文档,例如:
knife4j:
enable: true
setting:
enableReloadCacheParameter: true
12、修复兼容性bug,当升级后,默认Swagger Models
以及文档管理
功能丢失的问题
Java开发使用Knife4j
目前有一些不同的版本变化,主要如下:
1、如果开发者继续使用OpenAPI2的规范结构,底层框架依赖springfox2.10.5版本,那么可以考虑Knife4j
的2.x版本
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<!--在引用时请在maven中央仓库搜索2.X最新版本号-->
<version>2.0.7</version>
</dependency>
2、如果开发者使用OpenAPI3的结构,底层框架依赖springfox3.0.0,可以考虑Knife4j
的3.x版本
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<!--在引用时请在maven中央仓库搜索3.X最新版本号-->
<version>3.0.1</version>
</dependency>
3、如果开发者底层框架使用的是springdoc-openapi
框架,则需要使用Knife4j
提供的对应版本,需要注意的是该版本没有Knife4j
提供的增强功能,是一个纯Ui。
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-springdoc-ui</artifactId>
<!--在引用时请在maven中央仓库搜索3.X最新版本号-->
<version>3.0.1</version>
</dependency>
Knife4j
前身是swagger-bootstrap-ui
,是一个为Swagger接口文档赋能的工具
效果(旧版):http://swagger-bootstrap-ui.xiaominfo.com/doc.html
效果(2.X版):http://knife4j.xiaominfo.com/doc.html
Gitee:https://gitee.com/xiaoym/knife4j
GitHub:https://github.com/xiaoymin/swagger-bootstrap-ui
示例:https://gitee.com/xiaoym/swagger-bootstrap-ui-demo
1、支持UiConfiguration中方法调试的配置,如并未配置任何支持的方法,在ui界面中不会出现调试栏Tab,代码如下:
@Bean
public UiConfiguration uiConfiguration(){
return UiConfigurationBuilder.builder()
.supportedSubmitMethods(new String[]{})
.build();
}
2、在当前文档页添加复制接口
功能,便于开发人员快速复制接口地址github #238
3、修复Authorize修改或注销的问题gitee #I1IJK3
4、个性化配置新增Host属性的配置,如果当前对外提供的接口文档和接口本身Host属性存在冲突,可以自动配置此属性进行接口的联调,Host属性可以配置为ip:port
的形式,这样默认是HTTP进行访问,开发者也可以配置完整的域名或者HTTPS
等配置
其工作原理是在调用axios组件进行接口调试时,配置其baseURL
属性
var baseUrl='';//默认是空
//是否启用Host
if(this.enableHost){
baseUrl=this.enableHostText;
}
var requestConfig={
baseURL:baseUrl,//调用目标Host服务的接口
url: url,
method: methodType,
headers: headers,
params: formParams,
data: data,
//Cookie标志
withCredentials:this.debugSendHasCookie(headers),
timeout: 0
}
开发者要使用此Host的配置后端必须开启跨域的配置,如果是Spring Boot
,示例代码如下:
@Bean
public CorsFilter corsFilter(){
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration=new CorsConfiguration();
corsConfiguration.setAllowCredentials(true);
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
corsConfiguration.setMaxAge(10000L);
source.registerCorsConfiguration("/**",corsConfiguration);
CorsFilter corsFilter=new CorsFilter(source);
return corsFilter;
}
5、调试接口时,接口在无返回数据或者异常的情况下弹框错误信息,提示开发者
6、图片预览接口无法在响应内容中在线预览图片的问题gitee #I1KP0Q
7、修复针对Map
字段时,Value指引是本类时出现递归死循环的问题,结构如下:
"SensorTable": {
"type": "object",
"properties": {
"attrib": {
"type": "integer",
"format": "int32"
},
"sensorMap": {
"type": "object",
"additionalProperties": {
"originalRef": "SensorTable",
"$ref": "#/definitions/SensorTable"
}
}
//more...
},
"title": "SensorTable"
},
8、修复离线文档功能导出Markdown
时,响应参数格式异常的问题gitee #I1LMYO
9、修复在使用中间件对接口响应内容进行拦截处理时,响应内容不显示的bug,例如使用sentinel
进行QPS限流,一般在这种情况下是由于接口响应的Content-Type是json,但实际响应内容却是text导致gitee #I1JO73
Knife4j
前身是swagger-bootstrap-ui
,是一个为Swagger接口文档赋能的工具
效果(旧版):http://swagger-bootstrap-ui.xiaominfo.com/doc.html
效果(2.X版):http://knife4j.xiaominfo.com/doc.html
Gitee:https://gitee.com/xiaoym/knife4j
GitHub:https://github.com/xiaoymin/swagger-bootstrap-ui
示例:https://gitee.com/xiaoym/swagger-bootstrap-ui-demo
1、读取Markdown文件时,当文件不存在时日志错误信息简化打印,开发者可以忽略该错误gitee #I1E1S1
1、移除Vue中的pwa机制,解决service-work.js引起的各种问题github #206
2、支持UiConfiguration中方法调试的配置,如并未配置任何支持的方法,在ui界面中不会出现调试栏Tab,代码如下:
@Bean
public UiConfiguration uiConfiguration(){
return UiConfigurationBuilder.builder()
.supportedSubmitMethods(new String[]{})
.build();
}
界面中的显示效果如下(仅显示文档):
3、GET请求出现参数未填的情况下发送Null的buggitee #I1BG4O、github #213
4、针对开发者在调试时更改接口地址,在接口地址中添加参数的情况,出现发送请求失败的buggitee #I1C5OQ
5、解决集成文档时各种basePath问题导致Ui的logo不显示的问题,通过Base64将logo图片转换处理,img
标签直接显示base64字符串gitee #1CQ1F
6、左侧菜单栏在收缩状态下显示版本控制的标识导致菜单异常的问题,在收缩状态下禁用该项gitee #I1CCXT、gitee #I1DBDF
7、增强功能忽略参数不完全的问题gitee PR#18
8、服务端在没有Write任何数据的情况下,针对非200状态码不显示状态的异常问题gitee #I1BKRH
9、针对raw类型的请求接口类型,全局参数中只能是header参数的问题,支持query类型的全局参数gitee #I1C86F
10、增加对Xml请求的适配支持,服务端consumes
属性设为application/xml
接口gitee #I1BCKB
11、增加@ApiSupport
注解,分组Controller下可以设置全局author属性,或者order排序属性
12、剔除webjar文件中的favicon.ico
文件,以避免和主项目产生冲突gitee #I1ELHN、github #215
13、新增includeParameters
属性,开发者可以在文档的参数中新增一种选择,该特性是和ignoreParameters
对立,具体可以参考文档
14、优化在editor编辑器中的属性字段显示效果gitee #I1G3G9
15、导出的Html、Markdown离线文件添加作者属性gitee #I1EXXO
16、在Ui的全局参数配置中添加Header类型的请求参数后,非空情况下会自动合并每个接口的Header请求参数,接口中的Header如果和全局参数配置中的Header同名但是为空的情况下,Ui会使用全局参数配置中的Header参数gitee #I1GD87
17、优化请求数据类型的显示问题,Ui自动根据参数的类型识别出当前接口的请求类型并进行展示,解决springfox等框架始终解析为json请求的buggitee #I1EMJ9、gitee #I1903T
18、修复请求头Content-Type在调试时被忽略的问题,该问题具体参考gitee #I18HGS,knife4j在2.x版本使用的是axios组件,axios针对发送的请求头data属性如果没有传递的情况下会忽略Content-Type请求头,具体可参考https://github.com/axios/axios/issues/86
19、添加I18n的支持,目前支持的语言:中文、English
20、请求头携带Cookie的情况,如果要使用Cookie,请求头的名称请确保为Cookie
,不能有小写或其他.
21、添加对springdoc框架的集成支持
如果你后端是Java+Spring的技术栈,在使用springfox的同时,想换一个Swagger的Ui皮肤,通过在pom.xml中直接引入即可,如下:
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-ui</artifactId>
<version>2.0.3</version>
</dependency>
后端渲染OpenAPI的解析框架是springdoc,则添加如下依赖引用:
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-springdoc-ui</artifactId>
<version>2.0.3</version>
</dependency>
使用Spring Boot的技术栈可以通过引用starter的方式快速引入使用,注意该starter组件是包含Ui的,如下:
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.3</version>
</dependency>
如果是微服务的情况下,微服务其实不需要引用Ui的jar包,只需要在网关引用Ui的jar包依赖,所以在微服务情况下,使用增强属性只需要引用微服务版本的starter依赖,如下:
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-micro-spring-boot-starter</artifactId>
<version>2.0.3</version>
</dependency>
knife4j-admin
是一个基于Spring Cloud Gateway网关,通过网关的特性,结合knife4j
对Swagger的文档进行动态聚合的管理平台
平台特点:
如果你有以上的需求的话,可以考虑使用一下knife4j-admin这个产品,产品文档点这里
Knife4j
前身是swagger-bootstrap-ui
,是一个为Swagger接口文档赋能的工具
效果(旧版):http://swagger-bootstrap-ui.xiaominfo.com/doc.html
效果(2.X版):http://knife4j.xiaominfo.com/doc.html
Gitee:https://gitee.com/xiaoym/knife4j
GitHub:https://github.com/xiaoymin/swagger-bootstrap-ui
示例:https://gitee.com/xiaoym/swagger-bootstrap-ui-demo
1、新增knife4j-dependencies
模块,管理knife4j的相关Maven引用,可以以Maven的BOM方式引入Knife4j
2、官网文档同步更新.
3、解决swagger-annotations
导致的版本冲突gitee #I17G31、GitHub #191
1、修复切换tab之后 再次发送请求不带参数且不显示响应数据的问题,调试异常等问题PR 13 @gitee、gitee #I17FFX、GitHub #196、GitHub #187
2、优化调试框全部选中的问题,在取消全选时,只有在输入参数改变时才会选中该参数,取消原来默认选中全部参数gitee #I19V6D
3、针对Form表单类型的请求构造curl命令行时在未输入值的情况下为null的情况,修改为空字符串gitee #I18IBZ
4、优化全局参数设置功能,针对参数数据太长不换行问题,以及参数需要修改时需要重新删除的交互体验,开发者在新增参数后可以方便的更改参数数据值以及参数的类型gitee #I17OV1、gitee #I19GJK、gitee #I1A9V1、gitee #I18HMJ、GitHub #176
5、请求参数在未给定example默认值的情况下,文本输入框的placeHolder属性显示该字段的文字说明gitee #I17RKI
6、修复增强属性忽略参数不生效的问题gitee #PR-16、gitee #I136KU、gitee #I187VN、gitee #I16A71
7、调试参数框增加对后端枚举的支持,改输入框为下拉选择框gitee #I18MHO
8、service-worker.js报404问题,构建打包时添加此文件gitee #I17D0Y、GitHub #185
9、get请求参数出现特殊字符未编码处理导致出现400错误gitee #I19C8Y
10、后端新增接口或者接口编辑后,在ui界面显示更新标志,在菜单上会出现一个蓝色的徽标gitee #I1AQFW,如下图:
11、后端增强注解@ApiOperationSupport(author = "xiaoymin@foxmail.com")
支持每个接口提供开发者的呈现,最终如下图:
12、调试发送按钮增加loading
效果,针对接口响应较长的情况下提升交互效果
13、针对Authorize菜单栏的参数,保存参数是全局保存,其它逻辑分组的接口再调试时,不需要再保存一次新值gitee #I16Z10
14、修复部分情况响应字段在ace-editor编辑器右边栏不显示字段说明的情况gitee #I17F5Y
15、搜索框完善对接口请求Api地址栏的模糊搜索匹配gitee #I19EN0、gitee #I1B0Q9
16、调试响应数据行太长,无法换行的问题gitee #I17F1J
17、在当前接口无参数的情况下,界面添加全局参数无效果的bug
如果你后端是Java+Spring的技术栈,在使用springfox的同时,想换一个Swagger的Ui皮肤,通过在pom.xml中直接引入即可,如下:
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-ui</artifactId>
<version>2.0.2</version>
</dependency>
使用Spring Boot的技术栈可以通过引用starter的方式快速引入使用,注意该starter组件是包含Ui的,如下:
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
如果是微服务的情况下,微服务其实不需要引用Ui的jar包,只需要在网关引用Ui的jar包依赖,所以在微服务情况下,使用增强属性只需要引用微服务版本的starter依赖,如下:
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-micro-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>