# [v2.0.5-2020/09/14 Knife4j 2.0.5发布,性能优化]
`Knife4j`前身是`swagger-bootstrap-ui`,是一个为Swagger接口文档赋能的工具

**文档**：[https://doc.xiaominfo.com](https://doc.xiaominfo.com/)

**效果(旧版)**：http://swagger-bootstrap-ui.xiaominfo.com/doc.html

**效果(2.X版)**：[http://knife4j.xiaominfo.com/doc.html](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、Ui整体性能优化,主要从以下几个方面展开[Gitee #I1TYNK](https://gitee.com/xiaoym/knife4j/issues/I1TYNK)、[Gitee #I1LWNM](https://gitee.com/xiaoym/knife4j/issues/I1LWNM)、[Gitee #I1J52C](https://gitee.com/xiaoym/knife4j/issues/I1J52C)、[GitHub #243](https://github.com/xiaoymin/swagger-bootstrap-ui/issues/243)

- 获取接口初始化Swagger文档时,只初始化菜单、以及基础信息字段
- 接口path节点以及Model-definition节点作为异步解析，除了导出功能外只有展示的文档涉及到的信息才会进行解析，缩减没必要的内存开销和空间性能等待
- SwaggerModels功能中的所有Model通过异步加载,减少内存开销.

2、通过`@EnableKnife4j`注解注入的实体Bean包含部分Filter,Filter涉及到应用入侵,优化为只有在开发者启用了Knife4j提供的配置值时,该实体Bean才生效

3、解决通过`/plus`路径来开启增强模式时失效的问题[Gitee #I1OJCK](https://gitee.com/xiaoym/knife4j/issues/I1OJCK)

4、接口描述信息支持Markdown语法渲染

5、解决调试发送后,状态栏curl出现参数为null的问题[Gitee #I1QC7Z](https://gitee.com/xiaoym/knife4j/issues/I1QC7Z)、[Gtiee #I1QXJ1](https://gitee.com/xiaoym/knife4j/issues/I1QXJ1)

6、移除fastjson等不必要的依赖[Gitee I1OIY9](https://gitee.com/xiaoym/knife4j/issues/I1OIY9)

7、在左侧菜单接口中新增接口类型,并且在分组中显示当前分组下包含的接口数量[Gitee #I1PE0H](https://gitee.com/xiaoym/knife4j/issues/I1PE0H)，如下图：

![](/knife4j/images/blog/knife4j2.0.5/requestArr.png)

8、优化在当前分组名称/Controller名称/接口分词中带字符`/`导致页面空白的问题,如果包含使用字符`-`进行替换[Gitee #I1SMAY](https://gitee.com/xiaoym/knife4j/issues/I1SMAY)

9、`Vue`以及`ant-design-vue`版本升级到当前最新版

10、导出的离线Html文档优化属性,去除无效的属性引用导致Html文档文件太大(降低5倍以上).

11、增加导出Word文档的实现

12、返回大数据量造成页面卡死的问题优化[Gitee #I1QIJK](https://gitee.com/xiaoym/knife4j/issues/I1QIJK)

13、优化默认的标题显示,开发者未设置分组服务标题时文档标题默认显示`Knife4j 接口文档`[Gitee #I1P4OQ](https://gitee.com/xiaoym/knife4j/issues/I1P4OQ)

14、枚举类型针对`Array`数组类型支持多选[Gitee #I1NOTE](https://gitee.com/xiaoym/knife4j/issues/I1NOTE)、[GitHub #267](https://github.com/xiaoymin/swagger-bootstrap-ui/issues/267)

![](/knife4j/images/blog/knife4j2.0.5/enumArr.png)

15、针对`POST`、`PUT`、`PATCH`等请求方式,以`x-www-form-urlencoded`请求头发送请求时,请求参数在url追加的问题,以避免请求时400错误的发生.

16、在i18n环境下离线文档导出时没有完全国际化的优化操作[Gitee #I1MKP7](https://gitee.com/xiaoym/knife4j/issues/I1MKP7)

17、针对`@RequestBody`的请求下载接口响应乱码的问题修复[Gitee I1U4LA](https://gitee.com/xiaoym/knife4j/issues/I1U4LA)

18、调试返回状态栏数据大小的显示优化`B`.`KB`、`MB`[GitHub #264](https://github.com/xiaoymin/swagger-bootstrap-ui/issues/264)

19、支持UiConfiguration中方法调试的配置,如并未配置任何支持的方法,在ui界面中不会出现调试栏Tab[GitHub #241](https://github.com/xiaoymin/swagger-bootstrap-ui/issues/241)，代码如下：

```java
@Bean
public UiConfiguration uiConfiguration(){
    return UiConfigurationBuilder.builder()
        .supportedSubmitMethods(new String[]{})
        .build();
}
```

界面中的显示效果如下(仅显示文档)：

![](https://oscimg.oschina.net/oscnet/up-c2ff4f08dc156bae37d44bf8502a5fde6fa.png)

20、接口文档中针对请求参数存在示例值的情况下,在接口的参数说明中予以显示[GitHub #109](https://github.com/xiaoymin/swagger-bootstrap-ui/issues/109)

21、去除`doc.html`对`favicon.ico`的请求,以避免开发者在网关微服务的架构中集成时出现404.

## 特点

- 基于Vue+Ant Design构建的文档，更强大、清晰的接口文档说明能力以及接口调试能力
- 左右布局,基于Tabs组件的多文档查阅风格
- 支持在线导出Html、Markdown、Word、PDF等多种格式的离线文档
- 接口排序,支持分组及接口的排序功能
- 支持接口全局在线搜索功能
- 提供Swagger资源保护策略,保护文档安全
- 接口调试支持无限参数,开发者调试非常灵活，动态增加、删除参数
- 全局缓存调试信息,页面刷新后依然存在,方便开发者调试
- 以更人性化的table树组件展示Swagger Models功能
- 文档以多tab方式可显示多个接口文档
- 请求参数栏请求类型、是否必填着颜色区分
- 主页中粗略统计接口不同类型数量
- 支持自定义全局参数功能，主页包括header及query两种类型
- JSR-303 annotations 注解的支持
- 更多个性化设置功能

## 界面

接口文档显示界面如下：

![](/knife4j/images/blog/knife4j2.0.5/k-1.png)

接口调试界面如下：

![](/knife4j/images/blog/knife4j2.0.5/k-2.png)

Swagger Models功能

![](/knife4j/images/blog/knife4j2.0.5/k-3.png)

![](/knife4j/images/blog/knife4j2.0.5/k-4.png)

支持导出离线Markdown、Html功能，markdown的表格较原先版本通过缩减显示为树形结构,[点击预览导出离线Html效果](https://doc.xiaominfo.com/html/knife4j-export-html.html)，效果图如下：

![](/knife4j/images/blog/knife4j2.0.5/k-5.png)

通过第三方Markdown软件导出的PDF效果如下图:

![](/knife4j/images/blog/knife4j2.0.5/k-6.png)

同时提供了导出离线Html功能,Html功能界面风格和在线几乎没有区别,美观、大方、简洁,[点击在线预览效果](https://doc.xiaominfo.com/Knife4j-Offline-Html.html)，

界面效果如下图：

![](/knife4j/images/blog/knife4j2.0.5/k-7.png)

## Star & Issue

感谢各位朋友的支持,前往[https://gitee.com/xiaoym/knife4j](https://gitee.com/xiaoym/knife4j)点个Star吧~~ ：）
 
 
 