SpringBoot3集成Knife4j生成API文档
一、引言
Knife4j是基于Swagger的API测试文档生成框架,能够扫描SpringMVC框架下的Controller包中的类文件,并根据API接口生成对应的文档,支持在线调试和离线导出,极大的简化了前后端分离开发时,后端工作人员的调试和文档编写工作。
二、操作步骤
1.Knife4j依赖导入
视SpringBoot版本而定,所需要导入的Knife4j依赖版本应随之变化。下表给出了不同的SpringBoot版本所对应的不同的Knife4j的依赖版本,具体详情可见Knife4j官方文档中关于SpringBoot版本兼容性部分。
| Spring Boot版本 | Knife4j Swagger2规范 | Knife4j OpenAPI3规范 |
|---|---|---|
| 1.5.x~2.0.0 | <Knife4j 2.0.0 | >=Knife4j 4.0.0 |
| 2.0~2.2 | Knife4j 2.0.0 ~ 2.0.6 | >=Knife4j 4.0.0 |
| 2.2.x~2.4.0 | Knife4j 2.0.6 ~ 2.0.9 | >=Knife4j 4.0.0 |
| 2.4.0~2.7.x | >=Knife4j 4.0.0 | >=Knife4j 4.0.0 |
| >= 3.0 | >=Knife4j 4.0.0 | >=Knife4j 4.0.0 |
以SpringBoot3.3.5版本为例,在导入依赖时应选择4.0.0及以上版本。
1 | <dependency> |
2.配置文件编写
编写Knife4j基础配置,在springdoc.group-configs.packages-to-scan配置项下对应填写Controller层类的包名。
1 | # springdoc-openapi项目配置 |
3.新建Knife4j配置类
配置文件中不支持的配置项可以通过配置类的方式以代码实现,在这个类中配置了文档的标题、版本、描述以及作者的信息。
1 |
|
4.资源路径映射
API文档对应的静态资源文件路径在导入依赖的jar包中,因此直接访问资源无法成功,需要进行静态资源的路径映射。
1 |
|
5.访问API文档Url
至此已经完成了基本的导入配置,启动项目后可以通过http://IP:port/doc.html进入根据当前项目对应生成的API接口文档。
三、其他问题
1.拦截器问题
如果项目配置有登录拦截器,将会对Knife4j相关资源路径进行拦截并判断是否登录,对于API文档自然是离线访问,因此需要在登录拦截器中排除相关资源路径。
1 |
|
2.JSON序列化问题
为确保LocalDateTime、LocalDate、LocalTime类的自定义格式序列化,自定义JacksonObjectMapper类对全局的序列化和反序列化规则进行了相应的配置。这就导致了在进行访问API接口文档时,其返回值出现了JSON格式的序列化错误,需要对JacksonObjectMapper在消息转换器中的位置顺序进行调整。
初始代码为converters.addFirst(converters.size(), messageConverter);,阅读Knife4j文档请求异常贴子,其给出的解决方法是将这行代码修改为converters.add(converters.size() - 1, messageConverter);。
1 |
|
四、写在最后
Knife4j是一个集Swagger2和OpenAPI3 为一体的增强解决方案,能够帮助开发者快速聚合使用OpenAPI规范。结合Knife4j不仅能够帮助新项目快速生成API接口文档,协助开发调试,同时还能在维护旧项目时为其生成新的更实时的文档,提高维护效率。
- Title: SpringBoot3集成Knife4j生成API文档
- Author: QingchenJia
- Created at : 2024-11-25 18:51:57
- Updated at : 2026-05-13 12:45:18
- Link: https://qingchenjia.github.io/2024/11/25/SpringBoot3集成Knife4j生成API文档/
- License: This work is licensed under CC BY-NC-SA 4.0.