SpringBoot整合knife4j3.0.3

news/2024/9/22 16:54:53/

在Spring Boot项目中,我们可以通过引入Swagger依赖,然后在Controller中加入相应注解,即可生成API文档。Swagger提供了一个Web界面,在这个界面上可以查看所有API的信息,包括请求方法、参数、响应码等。Knife4j是Swagger-UI的增强版,它是在Swagger-UI的基础上进行了改进和优化,提供了更加完善的交互体验和更加美观的UI设计。同时,它也提供了更多的扩展功能,例如在线调试和多语言支持等。

配置

pom.xml:

 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version></dependency>

Swagger使用

在Spring Boot项目中,Controller通常会有多个接口,我们可以通过在Controller类上添加@Api注解来为API接口添加描述信息,以及使用@ApiOperation注解来为单个接口添加描述信息。

使用

在Spring Boot项目中,我们可以通过Swagger注解@Api来定义接口分组。@Api注解指定了该Controller的标签为“用户管理”,这个标签将作为接口分组的名称::

java">@RestController
@RequestMapping("/users")
@Api(tags = "用户管理")
public class UserApi {}

当一个Controller包含多个接口时,可以通过@ApiOperation注解指定每个接口的简介和说明。例如:

java">@RestController
@RequestMapping("/users")
@Api(tags = "用户管理")
public class UserApi {@GetMapping("/{id}")@ApiOperation(value = "获取用户信息", notes = "根据用户ID获取用户信息")public User getUserById(@PathVariable("id") Long id) {}@PostMapping@ApiOperation(value = "创建用户", notes = "创建新用户")public User createUser(@RequestBody User user) {}// ...
}

此外,设置项目的基本信息也是有必要的。

java">@EnableOpenApi
@Configuration
public class DocumentConfig {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.jp")).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("管理平台API文档").description("管理系统").contact(new Contact("jp", "", "")).version("2.0.0").build();}
}

打开API文档地址:
在这里插入图片描述

接口字段说明

Swagger提供了@ApiImplicitParam注解。下面演示使用@ApiImplicitParam注解指定了每个参数的名称、类型和说明:

java">@RestController
@RequestMapping("/users")
@Api(tags = "用户管理")
public class UserApi {@GetMapping("/{id}")@ApiOperation(value = "获取用户信息", notes = "根据用户ID获取用户信息")@ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long", paramType = "path")public User getUserById(@PathVariable("id") Long id) {// ...}@PostMapping@ApiOperation(value = "创建用户", notes = "创建新用户")@ApiImplicitParams({@ApiImplicitParam(name = "user", value = "用户实体", required = true, dataType = "User", paramType = "body")})public User createUser(@RequestBody User user) {// ...}// ...
}

在这里插入图片描述

Knife4j 增强功能

  • 离线文档导出: 用户可以直接在界面上导出 HTML、Markdown 或 Word 格式的离线文档,这对于没有网络环境下的开发、分享或者存档非常有用。
  • 接口排序与分组: Knife4j 支持对API接口进行自定义排序和分组,使得文档结构更加清晰有序,方便用户快速定位到所需接口。
  • 在线调试与数据模拟: 除了基本的接口调用测试外,Knife4j 还增强了在线调试功能,支持设置请求头、Cookie、Body等多种参数,以及保存历史请求、导入导出测试数据等,便于开发者快速验证API功能。
  • 登录认证支持: 为了保护API文档的安全,Knife4j 支持多种登录认证方式(如Basic Auth、OAuth2等),可以对接企业的统一认证系统,确保只有授权用户才能访问API文档。
  • 国际化支持: 内置多语言支持,可以根据用户浏览器的语言偏好自动切换界面语言,提高国际团队的协作效率。

总结

Spring Boot与Knife4j 3.0.3的整合,是提升API管理水平和团队协作效率的有效手段。它不仅简化了API文档的创建和维护工作,还通过增强的功能特性,为开发者和API使用者带来了前所未有的便利。无论是对于快速发展的创业公司还是大型企业级项目,这种整合都是构建高质量API不可或缺的一部分。


http://www.ppmy.cn/news/1444393.html

相关文章

MySQL_day1

目录 [快捷键] # ### part1 # (1) 登录 # (2) 退出 # ### part2 # 查询当前登录用户 # 设置密码 # 去除密码 # ### part3 # 给具体某个ip设置一个账户连接linux # 给具体192.168.126.% 这个网段下的所有ip设置账户 # 给所有ip下的主机设置账户 # ### part4 [必须熟…

php7.4在foreach中对使用数据使用无法??[]判读,无法使用引用传递

代码如下图&#xff1a;这样子在foreach中是无法修改class_history的。正确的应该是去掉??[]判断。 public function actionY(){$array [name>aaa,class_history>[[class_name>一班,class_num>1],[class_name>二班,class_num>2]]];foreach ($array[class_…

K8S哲学 - statefulSet 灰度发布

kubectl get - 获取资源及配置文件 kubectl get resource 【resourceName -oyaml】 kubectl create - 指定镜像创建或者 指定文件创建 kubectl create resource 【resourceName】 --imagemyImage 【-f my.yaml】 kubectl delete kubectl describe resource resourc…

HTTP Host 头攻击 原理以及修复方法

漏洞名称 &#xff1a;HTTP Host头攻击 漏洞描述&#xff1a; 一般通用web程序是如果想知道网站域名不是一件简单的事情&#xff0c;如果用一个固定的URI来作为域名会有各种麻烦。开发人员一般是依赖HTTP Host header&#xff08;比如在php里_SERVER["HTTP_HOST"] …

设计模式学习笔记 - 项目实战三:设计实现一个支持自定义规则的灰度发布组件(分析)

概述 到现在为止&#xff0c;我们已经学习了接口限流框架和接口幂等框架两个实战项目。接下来&#xff0c;再带你实战一个新的项目&#xff1a;灰度发布组件。这是最后一个实战项目。还是老套路&#xff0c;把它分为分析、设计、实现三个部分&#xff0c;对应三篇文章来讲解。…

XMind抢购活动测试点

抢购活动测试点 后台抢购列表管理可以添加,编辑,删除抢购活动 列表中已购买是抢购商品生成的订单 添加抢购活动 抢购标题 长度 类型 规则 是否必填 是 是否重复 …

举例详解 TCP/IP 五层(或四层)模型与 OSI七层模型对比 (画图详解 一篇看懂!)

目录 一、为什么要对协议进行分层 1、什么是协议分层 2、协议分层的好处 二、TCP/IP 五层&#xff08;或四层&#xff09;模型 1、概念 应用层 传输层 网络层 数据链路层 物理层 2、举例详解 传输层 网络层 数据链路层 和 物理层 应用层 四、TCP/IP 五层&…

走向大规模应用之前,DePIN 如何突破技术、数据与市场之网

近期&#xff0c;随着分布式物理基础设施网络&#xff08;DePIN&#xff09;的快速演变&#xff0c;一个旨在利用区块链技术彻底改造传统基础设施模型的新兴生态系统正在逐渐浮现。2024 年 4 月&#xff0c;以 peaq 为代表的 DePIN 项目成功筹集了 1500 万美元用于生态系统的扩…