当前位置: 首页 > news >正文

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.neticon-default.png?t=N7T8http://knife4j.net/

1.6 Swagger 3 (OpenAPI 3) 与swagger 2 区别

1.7 Swagger 3 (OpenAPI 3)注解详细介绍

(1)基本信息注解描述位置属性

@OpenAPIDefinition

用于定义整个 API 文档的基本信息。类、接口
  • info:指定 @Info 注解的对象,用于描述 API 文档的基本信息。

@Info

用于定义 API 文档的基本信息类、接口。
  • title:API 的标题。
  • description:API 的描述。
  • version:API 的版本号。
  • termsOfService:服务条款的 URL。
  • contact:指定 @Contact 注解的对象,用于描述联系人信息。
  • license:指定 @License 注解的对象,用于描述许可证信息。

@Contact

用于定义 API 文档中的联系人信息。类、接口
  • name:联系人的名称。
  • url:联系人的网址。
  • email:联系人的电子邮件地址。

@License

用于定义 API 文档中的许可证信息类、接口。
  • name:许可证的名称。
  • url:许可证的网址。
(2)分组注解描述位置属性

@Tag

用于给 API 分组,用途类似于为 API 文档添加标签。方法、类、接口
  • name:分组的名称。
(3)请求方法注解描述位置属性

@Operation

用于描述 API 的操作。方法。
  • summary:操作的摘要信息。
  • description:操作的详细描述。
  • tags:指定 @Tag 注解的对象数组,用于将操作归类到特定的分组。
  • parameters:指定 @Parameter 注解的对象数组,用于描述操作的输入参数。
  • responses:指定 @ApiResponse 注解的对象数组,用于描述操作的响应结果。
  • requestBody:指定 @RequestBody 注解的对象,用于描述操作的请求体。

@Parameter

用于描述操作的输入参数。方法
  • name:参数的名称。
  • in:参数的位置,可以是 pathqueryheadercookie 中的一种。
  • description:参数的描述。
  • required:参数是否必需,默认为 false
  • schema:指定 @Schema 注解的对象,用于描述参数的数据类型。

@RequestBody

用于描述操作的请求体方法
  • required:请求体是否必需,默认为 false
  • content:指定 @Content 注解的对象数组,用于描述请求体的内容。

@ApiResponse

用于描述操作的响应结果方法
  • responseCode:响应的状态码。
  • description:响应的描述。
  • content:指定 @Content 注解的对象数组,用于描述响应的内容。

@Content

用于描述请求体或响应的内容方法。
  • mediaType:内容的媒体类型。
  • schema:指定 @Schema 注解的对象,用于描述内容的数据类型。

@Schema

用于描述数据模型的属性。方法、类、接口。
  • title:数据模型的标题。
  • description:数据模型的描述。
  • type:数据模型的类型。
  • format:数据模型的格式。
(4)路径注解描述位置属性

@Path

用于定义路径参数。方法
  • value:路径参数的名称。

@PathVariable

用于描述路径参数。方法的参数
  • value:路径参数的名称。

@RequestParam

用于描述查询参数。方法的参数。
  • value:查询参数的名称。
  • required:查询参数是否必需,默认为 false

@RequestBody

用于描述请求体。方法的参数
(5) 响应注解描述位置属性

@ApiResponse

用于描述响应结果。方法。
  • responseCode:响应的状态码。
  • description:响应的描述。
  • content:指定 @Content 注解的对象数组,用于描述响应的内容。

@Content

用于描述响应结果的内容方法
  • mediaType:内容的媒体类型。
  • schema:指定 @Schema 注解的对象,用于描述内容的数据类型。

@Schema

用于描述数据模型的属性。方法、类、接口。
  • title:数据模型的标题。
  • description:数据模型的描述。
  • type:数据模型的类型。
  • format:数据模型的格式。

 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后&#xff0c;Swagger规范正式更名为OpenAPI规范&#xff0c;并且根据OpenAPI规范的版本号进行了更新。因此&#xff0c;Swagger 3.0对应的就是OpenAPI 3.0版本&#xff0c;它是Swagger在OpenAPI阶段推出的一个…...

SM2隐式证书用户公私钥生成python代码实现

GMT0130-2023具体描述基于SM2算法的隐式证书公钥机制&#xff0c;这里尝试Python代码实现密钥生成部分功能&#xff0c;具体如下&#xff0c;椭圆曲线计算实现使用python第三方包gmssl。 #生成用户私钥Da和公钥Pa&#xff0c;其中Da&#xff08;tAdA)mod N&#xff0c;Pa可以直…...

IEC104转MQTT网关快速实现了IEC104到MQTT的转换和数据交互

随着智能电网技术的不断进步&#xff0c;IEC 104&#xff08;IEC 60870-5-104&#xff09;协议作为电力系统中重要的远动通信标准&#xff0c;正逐步融入更广泛的物联网生态系统中。亚马逊AWS&#xff08;Amazon Web Services&#xff09;&#xff0c;作为全球领先的云计算服务…...

【OpenCV C++20 学习笔记】调节图片对比度和亮度(像素变换)

调节图片对比度和亮度&#xff08;像素变换&#xff09; 原理像素变换亮度和对比度调整 代码实现更简便的方法结果展示 γ \gamma γ校正及其实操案例线性变换的缺点 γ \gamma γ校正低曝光图片矫正案例代码实现 原理 关于OpenCV的配置和基础用法&#xff0c;请参阅本专栏的其…...

web UI自动化测试 浏览器模式设置

自动化之浏览器模式设置 做selenium UI自动化测试时&#xff0c;每次都需要启动浏览器、用例运行结束后再关闭浏览器&#xff0c;浏览器启动相当地耗费时间&#xff0c;在本机运行用例的话还得放开双手&#xff0c;可以使用chrome的headless模式&#xff0c;让浏览器在后台运行…...

OpenCV图像滤波(1)双边滤波函数bilateralFilter的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 功能描述 bilateralFilter是图像处理和计算机视觉领域中的一种高级图像滤波技术&#xff0c;特别设计用于在去除噪声的同时保留图像的边缘和细节。相比于传…...

前端开发使用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

目前界面长成这样&#xff1a; 配置别名 修改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制造运营

- **新闻要点**&#xff1a;Intel聘请了Micron的技术开发主管Dr. Naga Chandrasekaran担任首席全球运营官、执行副总裁以及Intel Foundry制造和供应链组织的总经理。他将负责Intel的所有制造运营事务。 #### 任命背景 - **领导团队**&#xff1a;Chandrasekaran将成为Intel执行…...

苹果发布iOS 18 Beta 4,新增CarPlay 壁纸等多项功能改进

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 iOS 18 Beta 4&#xff1a;新功能与改进的探索 苹果公司在2024年7月9日向开发者推送了iOS 18的第四个开发者预览版Beta 4更新&#xff0c;内部…...

谷粒商城实战笔记-50-51-商品分类的删除

文章目录 一&#xff0c;50-商品服务-API-三级分类-删除-逻辑删除1&#xff0c;逻辑删除的配置1.1 配置全局的逻辑删除规则&#xff08;可省略&#xff09;1.2 配置逻辑删除Bean&#xff08;可省略&#xff09;1.3 Bean相应字段上加上注解TableLogic 2&#xff0c;后台接口开发…...

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题整数转换英文表示

题目&#xff1a; 题解&#xff1a; var (singles []string{"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"}teens []string{&…...

使用C#手搓Word插件

WordTools主要功能介绍 编码语言&#xff1a;C#【VSTO】 1、选择 1.1、表格 作用&#xff1a;全选文档中的表格&#xff1b; 1.2、表头 作用&#xff1a;全选文档所有表格的表头【第一行】&#xff1b; 1.3、表正文 全选文档中所有表格的除表头部分【除第一行部分】 1.…...

WordPress主题追格企业官网主题免费开源版V1.1.6

追格企业官网主题免费开源版由追格开发的一款开源wordpress主题&#xff0c;专为企业建站和追格企业官网小程序&#xff08;开源版&#xff09;PC配套而设计&#xff0c;功能集新闻动态、留言反馈、产品与服务、公司简介、联系我们等模块。...

uniapp引入自定义图标

目录 一、选择图标&#xff0c;加入购物车 二、下载到本地 三、导入项目 四、修改字体引用路径 五、开始使用 这里以扩展iconfont图标为例 官网&#xff1a;iconfont-阿里巴巴矢量图标库 一、选择图标&#xff0c;加入购物车 二、下载到本地 直接点击下载素材&#xff0…...

pytorch-scheduler(调度器)

scheduler简介 scheduler(调度器)是一种用于调整优化算法中学习率的机制。学习率是控制模型参数更新幅度的关键超参数,而调度器根据预定的策略在训练过程中动态地调整学习率。 优化器负责根据损失函数的梯度更新模型的参数,而调度器则负责调整优化过程中使用的特定参数,通…...

防火墙与入侵检测系统(IDS/IPS)在现代网络安全中的关键角色

在数字化日益加速的今天&#xff0c;网络安全变得尤为重要。随着网络攻击的复杂性和频率不断增加&#xff0c;保护关键信息资产已成为各大小组织的首要任务。防火墙&#xff08;Firewall&#xff09;和入侵检测系统&#xff08;Intrusion Detection System&#xff0c;IDS&…...

Proxima向量检索库:硬件优化与量化技术实战解析

1. 项目概述&#xff1a;一个为现代开发者打造的“近邻”代码库 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Zen4-bit/Proxima”。乍一看这个标题&#xff0c;可能会有点摸不着头脑。“Zen4-bit”像是一个用户名或者某种架构的代号&#xff0c;而“Proxima”则让人联…...

别再熬大夜改论文了!okbiye AI 写作,把毕业论文从选题到终稿焊在及格线以上

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPT毕业论文 - Okbiye智能写作https://www.okbiye.com/ai/bylw 打开电脑&#xff0c;对着空白的 Word 文档发呆&#xff0c;开题报告和初稿大纲改了又改&#xff0c;导师的红批注比正文还长&#xff0c;格…...

C语言文件长度获取:fseek/ftell与stat方法详解与实战对比

1. 项目概述&#xff1a;为什么文件长度获取是基础却关键的操作在C语言开发中&#xff0c;处理文件是家常便饭。无论是读取配置文件、解析日志&#xff0c;还是处理二进制数据&#xff0c;我们经常需要知道一个文件到底有多大。这个看似简单的需求——“获取文件长度”——背后…...

2026 最新 6 款漏洞扫描工具!一篇全覆盖

渗透测试收集信息完成后&#xff0c;就要根据所收集的信息&#xff0c;扫描目标站点可能存在的漏洞了&#xff0c;包括我们之前提到过的如&#xff1a;SQL注入漏洞、跨站脚本漏洞、文件上传漏洞、文件包含漏洞及命令执行漏洞等&#xff0c;通过这些已知的漏洞&#xff0c;来寻找…...

无风扇智能本设计全解析:从被动散热原理到工程实践

1. 项目概述&#xff1a;一台“安静”的电脑&#xff0c;究竟意味着什么&#xff1f;最近在折腾一个挺有意思的项目&#xff0c;名字叫“无风扇创新智能本”。乍一听&#xff0c;你可能觉得这不就是一台没有风扇的笔记本电脑吗&#xff1f;市面上不是早就有一些主打静音的轻薄本…...

【NotebookLM经济学研究辅助终极指南】:20年量化研究员亲授5大高阶用法,90%学者还不知道的AI研报加速术

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM经济学研究辅助的底层逻辑与范式革命 NotebookLM 以语义理解为核心&#xff0c;将传统文献驱动的研究流程重构为“知识图谱—问题锚定—推理生成”三位一体的新范式。其底层并非依赖关键词匹…...

企业微信社群运营太耗人力?API自动化方案实战分享

通过 QiWe API RPA 自动化能力&#xff0c;实现企业微信社群从拉群、维护到触达的全流程自动化运营。社群运营在私域体系中很重要&#xff0c;但也是最“吃人力”的环节之一&#xff1a;拉群、邀请客户全靠人工群公告、活动通知重复发送群成员管理耗时且容易出错多个社群需要反…...

FModel:解锁虚幻引擎游戏资源的终极工具指南

FModel&#xff1a;解锁虚幻引擎游戏资源的终极工具指南 【免费下载链接】FModel Unreal Engine Archives Explorer 项目地址: https://gitcode.com/gh_mirrors/fm/FModel 你是否曾好奇过《堡垒之夜》中炫酷的皮肤是如何制作的&#xff1f;或是想要探索《Valorant》中精…...

Perplexity引用溯源失效的5个致命盲区:从数据管道到渲染层的全链路修复手册

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity引用透明度优化的底层逻辑与设计哲学 Perplexity 作为衡量语言模型输出不确定性的核心指标&#xff0c;其引用透明度&#xff08;Referential Transparency&#xff09;并非天然具备——当同…...

2026年南京本地实测整理,值得入手的高性价比全屋定制品牌推荐

讲真&#xff0c;南京准备装房子、换柜子的姊妹们、老少爷们&#xff0c;谁没为全屋定制头大过&#xff1f;刚收了江北核心区的新房&#xff0c;还是鼓楼老破小准备翻新&#xff0c;跑了三五家门店就会发现&#xff1a;水太深了&#xff01;低价套餐勾你进去&#xff0c;签约后…...