spring-boot3.x整合Swagger 3 (OpenAPI 3) +knife4j
1.简介
OpenAPI阶段的Swagger也被称为Swagger 3.0。在Swagger 2.0后,Swagger规范正式更名为OpenAPI规范,并且根据OpenAPI规范的版本号进行了更新。因此,Swagger 3.0对应的就是OpenAPI 3.0版本,它是Swagger在OpenAPI阶段推出的一个重要版本。与前几个版本相比,Swagger 3.0更加强调对RESTful API的支持和规范化,提供了更丰富和灵活的定义方式,并且可以用于自动生成文档、客户端代码、服务器代码和测试工具等。
1.1 Open API
OpenApi是业界真正的 api 文档标准,其是由 Swagger 来维护的,并被linux列为api标准,从而成为行业标准。
OpenAPI 3 Library for spring-boot (springdoc.org)
1.2 Swagger
swagger 是一个 api 文档维护组织,后来成为了 Open API 标准的主要定义者
1.3 SpringFox
SpringFox 是一个成熟且广泛使用的库,它允许你通过注解描述 API 并生成符合 OpenAPI 规范(原 Swagger 规范)的文档。SpringFox 支持 Swagger 2.0 及其后继者 OpenAPI 3.0。
特点:
- 支持 Swagger 2.0 和 OpenAPI 3.0。
- 通过使用 Swagger 注解(如
@Api,@ApiOperation,@ApiModel,@ApiModelProperty等)来描述 API。 - 提供了多种方式来自定义文档,包括通过代码或配置文件。
- 可以通过扫描类路径中的控制器类自动生成文档。
- 更新频率较低,最近几年维护活动减少。
1.4 SpringDoc
OpenAPI 3 Library for spring-boot (springdoc.org)
SpringDoc 是一个相对较新的替代方案,它专为 OpenAPI 3.0 设计,提供了对最新 OpenAPI 规范的全面支持。
特点:
- 主要关注 OpenAPI 3.0,对 OpenAPI 3.0 的支持更全面。
- 使用更简洁的注解(如
@Tag,@Operation,@Parameter等)来描述 API。 - 更好的支持 Spring WebFlux,适合现代的响应式编程模型。
- 更频繁的更新和活跃的社区支持。
- 与 Spring Boot 的集成更加紧密,可以通过 Spring Boot 的自动配置特性简化设置过程。
1.5 Knife4j
Knife4jInsight(简单、方便的OpenAPI接口文档私有化聚合平台),地址:http://knife4j.net
http://knife4j.net/
1.6 Swagger 3 (OpenAPI 3) 与swagger 2 区别



1.7 Swagger 3 (OpenAPI 3)注解详细介绍
| (1)基本信息注解 | 描述 | 位置 | 属性 |
| @OpenAPIDefinition | 用于定义整个 API 文档的基本信息。 | 类、接口 |
|
| @Info | 用于定义 API 文档的基本信息 | 类、接口。 |
|
| @Contact | 用于定义 API 文档中的联系人信息。 | 类、接口 |
|
| @License | 用于定义 API 文档中的许可证信息 | 类、接口。 |
|
| (2)分组注解 | 描述 | 位置 | 属性 |
| @Tag | 用于给 API 分组,用途类似于为 API 文档添加标签。 | 方法、类、接口 |
|
| (3)请求方法注解 | 描述 | 位置 | 属性 |
| @Operation | 用于描述 API 的操作。 | 方法。 |
|
| @Parameter | 用于描述操作的输入参数。 | 方法 |
|
| @RequestBody | 用于描述操作的请求体 | 方法 |
|
| @ApiResponse | 用于描述操作的响应结果 | 方法 |
|
| @Content | 用于描述请求体或响应的内容 | 方法。 |
|
| @Schema | 用于描述数据模型的属性。 | 方法、类、接口。 |
|
| (4)路径注解 | 描述 | 位置 | 属性 |
| @Path | 用于定义路径参数。 | 方法 |
|
| @PathVariable | 用于描述路径参数。 | 方法的参数 |
|
| @RequestParam | 用于描述查询参数。 | 方法的参数。 |
|
| @RequestBody | 用于描述请求体。 | 方法的参数 | |
| (5) 响应注解 | 描述 | 位置 | 属性 |
| @ApiResponse | 用于描述响应结果。 | 方法。 |
|
| @Content | 用于描述响应结果的内容 | 方法 |
|
| @Schema | 用于描述数据模型的属性。 | 方法、类、接口。 |
|
2. 配置Knife4j
2.1 添加依赖
因为Knife4j提供的starter已经引用springdoc-openapi的jar,开发者需注意避免jar包冲突。这里直接使用Knife4j
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.4.0</version>
</dependency>
2.2 添加配置类
package com.zsh.test.swagger3test.config;import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.media.StringSchema;
import io.swagger.v3.oas.models.parameters.Parameter;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springdoc.core.configuration.SpringDocConfiguration;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.Collections;/**Knife4j整合swagger3* @author ZhaoShuhao* @data 2024/7/21 11:06*/
@Configuration
public class OpenApiConfig {@Beanpublic OpenAPI springShopOpenApi() {return new OpenAPI()// 接口文档标题.info(new Info().title("swagger3")// 接口文档简介.description("这是基于Knife4j OpenApi3的测试接口文档")// 接口文档版本.version("1.0版本")// 开发者联系方式.contact(new Contact().name("zsh").email("1401969521@qq.com")));}
}
2.3 yml配置
springdoc:swagger-ui:path: /swagger-ui.htmltags-sorter: alphaoperations-sorter: alphaapi-docs:path: /v3/api-docsgroup-configs:- group: 'zsh'paths-to-match: '/**'#生成文档所需的扫包路径,一般为启动类目录packages-to-scan: com.zsh.test.swagger3test#knife4j配置
knife4j:#是否启用增强设置enable: true#开启生产环境屏蔽production: false#是否启用登录认证basic:enable: trueusername: adminpassword: 123456setting:language: zh_cnenable-version: trueenable-swagger-models: trueswagger-model-name: 用户模块
2.4 运行结果
路径:http://localhost:8080/doc.html


相关文章:
spring-boot3.x整合Swagger 3 (OpenAPI 3) +knife4j
1.简介 OpenAPI阶段的Swagger也被称为Swagger 3.0。在Swagger 2.0后,Swagger规范正式更名为OpenAPI规范,并且根据OpenAPI规范的版本号进行了更新。因此,Swagger 3.0对应的就是OpenAPI 3.0版本,它是Swagger在OpenAPI阶段推出的一个…...
SM2隐式证书用户公私钥生成python代码实现
GMT0130-2023具体描述基于SM2算法的隐式证书公钥机制,这里尝试Python代码实现密钥生成部分功能,具体如下,椭圆曲线计算实现使用python第三方包gmssl。 #生成用户私钥Da和公钥Pa,其中Da(tAdA)mod N,Pa可以直…...
IEC104转MQTT网关快速实现了IEC104到MQTT的转换和数据交互
随着智能电网技术的不断进步,IEC 104(IEC 60870-5-104)协议作为电力系统中重要的远动通信标准,正逐步融入更广泛的物联网生态系统中。亚马逊AWS(Amazon Web Services),作为全球领先的云计算服务…...
【OpenCV C++20 学习笔记】调节图片对比度和亮度(像素变换)
调节图片对比度和亮度(像素变换) 原理像素变换亮度和对比度调整 代码实现更简便的方法结果展示 γ \gamma γ校正及其实操案例线性变换的缺点 γ \gamma γ校正低曝光图片矫正案例代码实现 原理 关于OpenCV的配置和基础用法,请参阅本专栏的其…...
web UI自动化测试 浏览器模式设置
自动化之浏览器模式设置 做selenium UI自动化测试时,每次都需要启动浏览器、用例运行结束后再关闭浏览器,浏览器启动相当地耗费时间,在本机运行用例的话还得放开双手,可以使用chrome的headless模式,让浏览器在后台运行…...
OpenCV图像滤波(1)双边滤波函数bilateralFilter的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 功能描述 bilateralFilter是图像处理和计算机视觉领域中的一种高级图像滤波技术,特别设计用于在去除噪声的同时保留图像的边缘和细节。相比于传…...
前端开发使用Big.js精算避免误差
1、下载 npm install big.js 全局引入还是局部引入可根据项目框架及个人需求 2、静态引入 < script src https://unpkg.com/big.js6.0.0/big.mjs > </ script > 或者 import Big from https://raw.githubusercontent.com/mikemcl/big.js/v6.0.0/big.mjs; i…...
在 Ubuntu 22.04/20.04 安装 CVAT 和 SAM 指南
1. 安装 Docker 和 Docker Compose sudo apt-get update sudo apt-get --no-install-recommends install -y \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-ke…...
【SpringCloud】 微服务分布式环境下的事务问题,seata大合集
目录 微服务分布式环境下的事务问题 分布式事务 本地事务 BASE理论与强弱一致性 BASE理论 强弱一致性 常见分布式事务解决方案 - 2PC 常见分布式事务解决方案 - TCC 常见分布式事务解决方案 - 最大努力通知 常见分布式事务解决方案 - 最终一致性 Seata介绍与术语 Seata…...
vite5+vue3开发阅读APP实战笔记20240725
目前界面长成这样: 配置别名 修改vite.config.js import {defineConfig} from vite import vue from vitejs/plugin-vue import path from "path"// https://vitejs.dev/config/ export default defineConfig({server: {open: true,port: 8088,},plug…...
Intel任命Micron技术开发主管领导Intel Foundry制造运营
- **新闻要点**:Intel聘请了Micron的技术开发主管Dr. Naga Chandrasekaran担任首席全球运营官、执行副总裁以及Intel Foundry制造和供应链组织的总经理。他将负责Intel的所有制造运营事务。 #### 任命背景 - **领导团队**:Chandrasekaran将成为Intel执行…...
苹果发布iOS 18 Beta 4,新增CarPlay 壁纸等多项功能改进
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 iOS 18 Beta 4:新功能与改进的探索 苹果公司在2024年7月9日向开发者推送了iOS 18的第四个开发者预览版Beta 4更新,内部…...
谷粒商城实战笔记-50-51-商品分类的删除
文章目录 一,50-商品服务-API-三级分类-删除-逻辑删除1,逻辑删除的配置1.1 配置全局的逻辑删除规则(可省略)1.2 配置逻辑删除Bean(可省略)1.3 Bean相应字段上加上注解TableLogic 2,后台接口开发…...
vue3+g2plot实现词云图
词云图 效果预览: 核心代码: import {WordCloud } from @antv/g2plot;fetch(https://gw.alipayobjects.com/os/antfincdn/jPKbal7r9r/mock.json).then((res) => res.json()).then((data) => {const wordCloud = new WordCloud(container, {data,wordField: x,weigh…...
Golang | Leetcode Golang题解之第273题整数转换英文表示
题目: 题解: var (singles []string{"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"}teens []string{&…...
使用C#手搓Word插件
WordTools主要功能介绍 编码语言:C#【VSTO】 1、选择 1.1、表格 作用:全选文档中的表格; 1.2、表头 作用:全选文档所有表格的表头【第一行】; 1.3、表正文 全选文档中所有表格的除表头部分【除第一行部分】 1.…...
WordPress主题追格企业官网主题免费开源版V1.1.6
追格企业官网主题免费开源版由追格开发的一款开源wordpress主题,专为企业建站和追格企业官网小程序(开源版)PC配套而设计,功能集新闻动态、留言反馈、产品与服务、公司简介、联系我们等模块。...
uniapp引入自定义图标
目录 一、选择图标,加入购物车 二、下载到本地 三、导入项目 四、修改字体引用路径 五、开始使用 这里以扩展iconfont图标为例 官网:iconfont-阿里巴巴矢量图标库 一、选择图标,加入购物车 二、下载到本地 直接点击下载素材࿰…...
pytorch-scheduler(调度器)
scheduler简介 scheduler(调度器)是一种用于调整优化算法中学习率的机制。学习率是控制模型参数更新幅度的关键超参数,而调度器根据预定的策略在训练过程中动态地调整学习率。 优化器负责根据损失函数的梯度更新模型的参数,而调度器则负责调整优化过程中使用的特定参数,通…...
防火墙与入侵检测系统(IDS/IPS)在现代网络安全中的关键角色
在数字化日益加速的今天,网络安全变得尤为重要。随着网络攻击的复杂性和频率不断增加,保护关键信息资产已成为各大小组织的首要任务。防火墙(Firewall)和入侵检测系统(Intrusion Detection System,IDS&…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
