news 2026/3/8 3:50:51

SpringBoot项目整合Knife4J

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot项目整合Knife4J
SpringBoot项目整合Knife4J
  • 前言

    • 为什么要使用API文档
    • 什么是API文档
  • Knife4j

    • Knife4j的进化史
    • Swagger和Knife4J的关系
  • SpringBoot整合Knife4j

    • 版本适配
    • 实现步骤
      • 1.导入依赖
      • 2.编写配置类
      • 新建一个controller进行测试
      • 启动项目
    • Knife4j增强配置
    • 常用注解
      • 例子展示
        • 实体类注解
        • Controller注解
  • Knife4j文档导出

    • 实现步骤
      • 1.进入Apifox选择导入项目
      • 2.选择Knife4j进行导入
      • 导入项目
      • 选择模块导入
      • 发送请求
  • 结语

    大家好!我是向阳,一个想成为优秀全栈开发工程师的有志青年!
    今天我们来介绍在前后端脱离开发项目中我们会使用到的一款强大的API规范文档的框架——Knife4J。

前言

为什么要使用API文档

首先我们要明白我们为什么要去使用API文档,在前后端脱离开发的情况下,前端程序员无法实时的知道后端接口开发的进度,后端程序员总不能每_开发完一个接口或者更新一次接口_就去wx上去跟前端程序员说,嘿!哥们哥们,我新增了一个接口,这个接口是这样这样子…这样沟通的成本也太高了,而且有时候还说不明白,搞得双方都很难受,在这样的情况下,API文档应运而生。

什么是API文档

API 文档是开发者了解 API 功能和如何正确使用的主要来源。它提供了详细的指导,包括请求格式、参数说明、响应结构等,API 文档的重要性在于它作为应用程序编程接口的纲要,为开发者提供了关键的信息,帮助他们正确、高效地使用和集成特定的 API。

Knife4j

官方文档:https://doc.xiaominfo.com/docs/quick-start
开源地址:https://gitee.com/xiaoym/knife4j

我们来简单介绍一下Knife4j。knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名knife4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍!

knife4j的前身是swagger-bootstrap-ui,为了契合微服务的架构发展,由于原来swagger-bootstrap-ui采用的是后端Java代码+前端Ui混合打包的方式,在微服务架构下显的很臃肿,因此项目正式更名为knife4j。

Knife4j的进化史

Knife4j从开源至今,目前主要经历版本的变化,分别如下:

版本

说明

1.0~1.9.6

名称是叫swagger-bootstrap-ui,蓝色风格Ui

1.9.6

蓝色皮肤风格,开始更名,增加更多后端模块

2.0~2.0.5

Ui基于Vue2.0+AntdV重写,黑色风格,参考示例,底层依赖的springfox框架版本是2.9.2,仅提供Swagger2规范的适配

2.0.6~2.0.9

底层springfox框架版本升级至2.10.5,仅提供Swagger2规范的适配

3.0~3.0.3

底层依赖springfox框架版本升级至3.0.3,OpenAPI规范是v3,过度版本,建议开发者不要使用

4.0~

区分OpenAPI2和Swagger3的Maven坐标artifactId
OpenAPI2规范服务端解析框架稳定在springfox2.10.5
OpenAPI3框架服务端解析跟随springdoc项目更新迭代

Swagger和Knife4J的关系

博主在刚接触Knife4j的时候觉得这和Swagger没什么区别嘛,都是API规范文档的框架,在查阅了部分资料后,知道了他们两个直接的联系。

Knife4j是Swagger-UI的增强版,它是在Swagger-UI的基础上进行了改进和优化,提供了更加完善的交互体验和更加美观的UI设计。同时,它也提供了更多的扩展功能,例如在线调试和多语言支持等。

其实看完Knife4j官方文档的介绍后也差不多知道Knife4j是Swagger的升级版

名称

开发语言&框架

状态

最后版本

风格

Knife4j

Java、JavaScript、Vue

持续更新

黑色

swagger-bootstrap-ui

Java、JavaScript、jQuery

停更

1.9.6

蓝色

SpringBoot整合Knife4j

okk,接下来进行我们的正题,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

由于目前绝大部分项目使用的还是JDK8,Knife4j OpenAPI3需要JDK版本在17及以上,所以我们就不作介绍。我们这块介绍的是SpringBoot版本在2.4.0~2.7.x,Knife4j版本在>= 4.0.0,使用Knife4j要注意版本的问题。

实现步骤
1.导入依赖

自4.0版本开始,maven组件的artifactId已经发生了变化。

<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi2-spring-boot-starter</artifactId> <version>{maven仓库最新版本}</version> </dependency>

在4.0版本之前,maven坐标如下:

<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>{<4.0.0版本}</version> </dependency>
2.编写配置类

给大家看一下我的项目架构,在Knife4jConfig下编写配置类。

/** * Knife4j配置类 */ @Configuration @EnableSwagger2WebMvc public class Knife4jConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(new ApiInfoBuilder() // 网站标题 .title("向阳的Swagger文档") // 描述 可以穿插md语法 .description("# 这是描述!") // 服务条款 .termsOfServiceUrl("......") // 设置作者 服务器url 邮箱 .contact(new Contact("向阳", "http://localhost:9999/demo", "xxx")) // 许可证 .license("...") // 许可证url .licenseUrl("....") // 版本 .version("1.0") .build()) .groupName("test测试组") .select() // 要扫描的包 .apis(RequestHandlerSelectors.basePackage("com.shousi.knife4jdemo.controller")) // 要扫描的url .paths(PathSelectors.any()) .build(); } }
新建一个controller进行测试

下面是我创建的一个测试接口,类命为TestController。

@Api(tags = "测试模块") @RestController @RequestMapping("/test") public class TestController { @GetMapping("/world") public String world(){ return "world knife4j"; } @ApiOperation(value = "打招呼") @GetMapping("/hello") @ApiImplicitParam(name = "name", value = "姓名", required = true) public String hello(@RequestParam("name") String name){ return "hello" + name; } }
启动项目

启动项目,访问http://localhost:端口号/doc.html。即可进入API文档。

Knife4j增强配置

在yml配置文件中添加增强配置,在第一次进入API管理文档时需要填写账号、密码,防止网址泄露让外来人员进行破坏。

knife4j: enable: true # 开启Swagger的Basic认证功能,默认是false basic: enable: true # 用户名 username: root # 密码 password: 123456

同样可以设置productionfalse,在生产环境下不开放Knife4j。

knife4j: production: false
常用注解

注解

解释

相关参数

@Api

对某个Controller进行详细描述

tags:该controller的名称

@ApiOperation

对某个接口/方法进行详细描述

value:该接口的详细名称/功能

@ApiImplicitParam

对某个接口/方法的单个参数进行详细描述

name:参数的名称
value:参数的描述
required:是否必填
dataType:参数类型

@ApiImplicitParams

对某个接口/方法的多个参数进行详细描述

name:参数的名称
value:参数的描述
required:是否必填
dataType:参数类型

@ApiModel

对某个实体类的基本信息进行描述

description:实体类的描述

@ApiModelProperty

对某个实体类的每个属性的进行详细描述

name:参数的名称
value:参数的描述
required:是否必填
dataType:参数类型

例子展示
实体类注解

当然也可以对实体类进行更详细的配置,例如设置dataType属性类型、required是否必须填写。

Controller注解

Knife4j文档导出

相信大家应该都使用过Apifox这款API文档(如果没有使用过可以在评论区留言,下一期可以详细介绍一下),可以将项目的Knife4j文档导入Apifox当中,我们不再用去一步一步手搓文档

实现步骤
1.进入Apifox选择导入项目

2.选择Knife4j进行导入

注意!如果你添加了增强配置,需要填写yml配置文件中对应的账户和密码,填写完毕后进行提交

导入项目

如果没有项目目录进行新建,如果有的话则选择已有的目录。

选择模块导入

如果是第一次导入的话,建议全部导入,如果需要筛选则自行选择。

发送请求

发送请求后,我们发现可以正常使用,这样就大功告成啦。

结语

正确的使用Knife4j可以大大节省时间、开发成本,学会使用Knife4j还是十分重要的!有关于Knife4j的后续以及一些高级用法也会继续更新,希望大家可以多多关注。

——??[作者]: ——?[更新]:2024.10.19 ——??本人技术有限,如果有不对指正需要更改或者有更好的方法,欢迎到评论区留言。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/7 1:01:31

YimMenu DLL注入秘籍:揭秘游戏修改的隐藏技巧

YimMenu DLL注入秘籍&#xff1a;揭秘游戏修改的隐藏技巧 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …

作者头像 李华
网站建设 2026/3/3 1:09:31

三步搞定音乐库歌词同步:批量下载终极方案

三步搞定音乐库歌词同步&#xff1a;批量下载终极方案 【免费下载链接】lrcget Utility for mass-downloading LRC synced lyrics for your offline music library. 项目地址: https://gitcode.com/gh_mirrors/lr/lrcget 还在为离线音乐缺少歌词而烦恼&#xff1f;LRCGe…

作者头像 李华
网站建设 2026/2/25 23:16:31

TuneFree:终极免费音乐播放器完全指南

TuneFree&#xff1a;终极免费音乐播放器完全指南 【免费下载链接】TuneFree 一款基于Splayer进行二次开发的音乐播放器&#xff0c;可解析并播放网易云音乐中所有的付费资源。 项目地址: https://gitcode.com/gh_mirrors/tu/TuneFree 还在为音乐平台的会员付费而烦恼吗…

作者头像 李华
网站建设 2026/2/28 8:12:08

EdgeRemover终极指南:如何在5分钟内彻底卸载微软Edge浏览器

EdgeRemover终极指南&#xff1a;如何在5分钟内彻底卸载微软Edge浏览器 【免费下载链接】EdgeRemover PowerShell script to remove Microsoft Edge in a non-forceful manner. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRemover 还在为Windows系统自带的Micros…

作者头像 李华
网站建设 2026/3/5 10:17:54

教学管理工具如何实现自主操作:极域电子教室破解实战

教学管理工具如何实现自主操作&#xff1a;极域电子教室破解实战 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 作为一名专业的技术导师&#xff0c;我深知在数字化教学环境中&a…

作者头像 李华
网站建设 2026/3/4 4:39:32

如何快速掌握LX音乐播放器:面向新手的完整使用指南

如何快速掌握LX音乐播放器&#xff1a;面向新手的完整使用指南 【免费下载链接】lx-music-desktop 一个基于 electron 的音乐软件 项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop 在当今数字音乐时代&#xff0c;找到一款真正免费且功能全面的音乐…

作者头像 李华