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

SpringBoot3使用Swagger3

SpringBoot3使用Swagger3

  • 项目中的后端接口进行简单的前端展示
  • 一、依赖引入
  • 二、快速启动
    • 1.在application.yml中配置
    • 2.或者properties文件,则配置
    • 3.启动项目访问swagger
  • 三、使用注解标注接口
    • Swagger配置文件
    • Swagger 注解迁移
    • 举例五种常用
      • @Api
      • @ApiOperation
      • @ApiImplicitParam
      • @ApiModel
      • @ApiModelProperty
    • 使用示例


项目中的后端接口进行简单的前端展示

Swagger是一个用于设计、构建、文档化和使用RESTful Web服务的开源工具。Swagger3是Swagger的最新版本,它提供了许多新功能和改进。

Swagger在SpringBoot3中的引入方法发生了改变,网上大部分还是SpringBoot2的版本

springboot版本3.2.4

一、依赖引入

用maven构建一个SpringBoot3的项目,在依赖中引入,在pom.xml中添加

<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.0.4</version>
</dependency>

版本也可以使用新版,Springdoc-OpenAPI网站链接

二、快速启动

1.在application.yml中配置

# swagger-ui custom path
springdoc:swagger-ui:path : /swagger-ui.html

2.或者properties文件,则配置

代码如下(示例):

# swagger-ui custom path
springdoc.swagger-ui.path=/swagger-ui.html

3.启动项目访问swagger

访问http://localhost:9090/swagger-ui/index.html#/
其中的9090 改成你项目后端使用的端口,注意不能省略后面的index.html


三、使用注解标注接口

Swagger配置文件

package com.sumo.ipd.config;import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class Swagger3Config {@Beanpublic OpenAPI springOpenAPI() {// 访问路径:http://localhost:9090/swagger-ui/index.htmlreturn new OpenAPI().info(new Info().title("SpringDoc API").description("SpringDoc Simple Application").version("0.0.1"));}
}

Swagger 注解迁移

Swagger2 和 Swagger3 使用的是完全不同的两套注解,所以原本使用 Swagger2 相关注解的代码页需要完全迁移,改为使用 Swagger3 的注解。

Swagger2Swagger3
@Api@Tag
@ApiOperation@Operation
@ApiImplicitParams@Parameters
@ApiImplicitParam@Parameter
@ApiModel@Schema
@ApiModelProperty@Schema
@ApiResponses@ApiResponses
@ApiResponse@ApiResponse
@ApiIgnore@Hidden 或者 其他注解的 hidden = true 属性

举例五种常用

@Api

Swagger2 代码

@Api(value = "用户接口", tags = "UserController")

Swagger3 代码

@Tag(name = "UserController", description = "用户接口")

@ApiOperation

Swagger2 代码

@ApiOperation(value = "查询用户数据")

Swagger3 代码

@Operation(description = "查询用户数据")

@ApiImplicitParam

Swagger2 代码

@ApiImplicitParams({@ApiImplicitParam(name = "currentPage", value = "当前页码", dataTypeClass = Integer.class, required = true),@ApiImplicitParam(name = "size", value = "当前页大小", defaultValue = "10", dataTypeClass = Integer.class),@ApiImplicitParam(name = "queryUser", value = "用户查询条件", dataTypeClass = User.class)
})

Swagger3 代码

@Parameters({@Parameter(name = "currentPage", description = "当前页码", required = true),@Parameter(name = "size", description = "当前页大小", example = "10"),@Parameter(name = "queryUser", description = "用户查询条件")
})

@ApiModel

Swagger2 代码

@ApiModel(value = "用户信息实体类")

Swagger3 代码

@Schema(name = "用户信息实体类")

@ApiModelProperty

Swagger2 代码

@ApiModelProperty(value = "用户名称")

Swagger3 代码

@Schema(name = "用户名称")

使用示例

package com.sumo.ipd.controller;import com.sumo.ipd.annotation.BusLog;
import com.sumo.ipd.entity.Department;
import com.sumo.ipd.entity.User;
import com.sumo.ipd.enums.Sex;
import com.sumo.ipd.enums.UserStatus;
import com.sumo.ipd.service.DepartmentService;
import com.sumo.ipd.service.UserService;
import com.sumo.ipd.utils.ExcelUtil;
import com.sumo.ipd.utils.PwdUtil;
import com.sumo.ipd.vo.LoginToken;
import com.sumo.ipd.vo.R;import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpSession;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import java.util.*;@RestController
@RequestMapping("user")
@CrossOrigin
@Tag(name = "UserController", description = "用户接口")
public class UserController {@ResourceUserService userService;@ResourceDepartmentService departmentService;/*** 用户注册** @param registerUser* @return*/@Operation(description = "用户注册")@PostMapping("register")public R register(@RequestBody User registerUser) {if (userService.query().eq(User.COL_CERTIFICATENO, registerUser.getCertificateNo()).count() > 0) {return R.builder().code(0).message("用户已存在!").build();} else {userService.save(registerUser);return R.builder().code(200).message("注册成功!请等待组织管理员审核...").build();}}
}

相关文章:

SpringBoot3使用Swagger3

SpringBoot3使用Swagger3 项目中的后端接口进行简单的前端展示一、依赖引入二、快速启动1.在application.yml中配置2.或者properties文件,则配置3.启动项目访问swagger 三、使用注解标注接口Swagger配置文件Swagger 注解迁移举例五种常用ApiApiOperationApiImplicitParamApiMod…...

【51单片机基础教程】点亮led

文章目录 前言51单片机点亮LED的原理硬件部分软件部分51单片机的寄存器编程步骤proteus仿真点亮一个led 点亮多个ledproteus仿真代码 流水灯 总结 前言 单片机&#xff08;Microcontroller Unit, MCU&#xff09;是一种集成电路&#xff0c;广泛应用于各种电子产品中。作为嵌入…...

Docker之overlay2的迁移

原因 docker默认将文件及其容器放置在了系统盘的挂载区内&#xff0c;如果长期使用会发现系统挂载区被overlay2挤爆了,因此在一开始我们将其迁移在大容量外挂磁盘上,就可以避免系统盘被挤爆,放心使用. 具体操作 # 停止容器 systemctl stop docker# 修改容器配置&#xff0c…...

CentOS中的rename命令

目录 CentOS中的rename命令基本语法使用示例注意事项安装prename CentOS中的rename命令 在CentOS系统中&#xff0c;rename命令通常是指util-linux包中提供的版本&#xff0c;它用于批量重命名文件&#xff0c;但与Perl版本的rename命令相比&#xff0c;功能较为简单&#xff…...

redis.conf 参数详解,方便进行性能优化配置

以下是redis.conf中一些常见参数的详细说明&#xff1a; daemonize&#xff1a;是否以后台进程运行&#xff0c;默认为no&#xff1b; pidfile&#xff1a;如以后台进程运行&#xff0c;则需指定一个pid&#xff0c;默认为/var/run/redis.pid&#xff1b;bind&#xff1a;绑定主…...

微信小程序登录流程详情及Java代码

一、流程图 说明&#xff1a; 调用 wx.login() 获取 临时登录凭证code &#xff0c;并回传到开发者服务器。 调用 auth.code2Session 接口&#xff0c;换取 用户唯一标识 OpenID 和 会话密钥 session_key。 获取手机号&#xff0c;调用wx.getPhoneNumber() &#xff0c;获取加密…...

c++qt合并两张灰度图像

需求&#xff1a;将两张尺寸相同的灰度图像进行合并&#xff0c;合并后的图像&#xff0c;每个像素点灰度值为两张原图对应像素点灰度值之和。若超过255&#xff0c;则最大为255。 方法一&#xff1a; 将图像读取为cv::Mat&#xff0c;再调用opencv的cv::add方法&#xff0c;进…...

Uniapp通过年月日时间转变星期格式

效果图 参靠微信小程序&#xff1a;日常记一记 代码 <view v-for"(d,index) in dataList" >{{getWeekDay(d.ctime)}} //时间格式&#xff1a;2024-06-21</view> js export default {data(){return {dataList:[],//时间数组}},onLoad() {this.loadList…...

如何编写和执行高效的测试计划

如何编写和执行高效的测试计划 1. 测试计划概述2. 测试阶段详解3. 测试计划模板4. 关键注意事项总结 1. 测试计划概述 测试计划是指导整个测试过程的重要文档&#xff0c;其中包含了测试策略、资源分配、进度安排以及风险评估等内容。 一个完善的测试计划应当包括以下几个主要…...

【MySQL连接器(Python)指南】03-MySQL连接器(Python)安装

文章目录 前言1. 从二进制发行版中安装连接器1.1 使用pip安装MySQL连接器1.2 使用MySQL Yum Repository安装1.3 使用Debian软件包安装连接器2. 从源代码发行版安装连接器2.1 在Windows上源码安装2.2 在类Unix系统上源码安装3. 验证连接器安装总结前言 MySQL连接器(Python),用于…...

Spring Boot组件化与参数校验

Spring Boot组件化与参数校验 Spring Boot版本选择 2.3.x版本 2.6.x版本 Spring Boot核心思想 约定大于配置&#xff0c;简化繁琐的配置 Spring Boot自动配置原理 SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类&#xff0c;Spr…...

实现可扩展的电商返利平台:技术选型与挑战

实现可扩展的电商返利平台&#xff1a;技术选型与挑战 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在当今数字化和电商兴盛的时代&#xff0c;返利平台成为…...

从0开始C++(三):构造函数与析构函数详解

目录 构造函数 构造函数的基本使用 构造函数也支持函数重载 构造函数也支持函数参数默认值 构造初始化列表 拷贝构造函数 浅拷贝和深拷贝 析构函数 总结 练习一下ヽ(&#xffe3;▽&#xffe3;)&#xff89; 构造函数 构造函数的基本使用 构造函数是一种特殊的成…...

行车记录仪文件夹“0字节”现象解析与恢复策略

一、行车记录仪文件夹“0字节”现象描述 行车记录仪作为现代驾驶中的必备设备&#xff0c;其储存的视频数据对于事故记录和取证至关重要。然而&#xff0c;有时车主们可能会遇到这样一个问题&#xff1a;行车记录仪的某个文件夹内的文件突然变成了0字节大小&#xff0c;无法正…...

呼叫中心系统的功能都有哪些?okcc呼叫中心pscc磐石云呼叫系统部署

当前电话营销普及到各行各业&#xff0c;方便快捷成了大部分企业在宣传自己公司的产品时必用的一种营销方式&#xff0c;但是电话营销在管理上也存在许多问题。例如&#xff1a;销售员与客户沟通前&#xff0c;未能详细了解客户的资料&#xff1b;多名销售员重复拨打同一个客户…...

2024.06.08校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;内推/实习/校招汇总表格 1、提前批 | 中电锦江2025届提前批招聘 提前批 | 中电锦江2025届提前批招聘 2、实习 | 国电电力2025届暑期实习生计划启动&#xff01; 实习 | 国电电力2025届暑期实习生计划启动&#x…...

Polyplus——转染试剂专业供应商

PolyPlus-transfection是一家专业的转染试剂研发和生产的生物技术公司&#xff0c;拥有20年的的转染试剂研发经验&#xff0c;通过创新的核酸转染解决方案支持基因和细胞治疗、生物制剂制造和生命科学研究。目前已经通过了ISO 9001: 2000质量体系认证&#xff0c;已经开发了一系…...

微服务架构-线上治理、线下治理与架构演进

目录 一、线上治理 1.1 概述 1.2 线上预案体系 1.2.1 概述 1.2.2 变更引起的故障 1.2.3 流量和容量变化引起的故障 1.2.4 依赖故障 1.2.5 机房、网络等硬件和环境故障 1.2.6 其他 1.2.7 故障的场景化 1.3 基于Metric的预案自动触发 1.4 治理参数动态调整 1.4.1 举例…...

网络安全:什么是SQL注入

文章目录 网络安全&#xff1a;什么是SQL注入引言SQL注入简介工作原理示例代码 攻击类型为什么SQL注入危险结语 网络安全&#xff1a;什么是SQL注入 引言 在数字化时代&#xff0c;数据安全成为了企业和个人最关心的问题之一。SQL注入&#xff08;SQL Injection&#xff09;是…...

从零开始精通Onvif之网络配置

&#x1f4a1; 如果想阅读最新的文章&#xff0c;或者有技术问题需要交流和沟通&#xff0c;可搜索并关注微信公众号“希望睿智”。 概述 网络配置是Onvif规范中的重要组成部分&#xff0c;允许用户通过网络远程配置和管理设备的网络设置&#xff0c;比如&#xff1a;DHCP、IP地…...

在 macOS 上使用 Homebrew 安装和配置 Python 及 Tk 库

在 macOS 上&#xff0c;系统自带的 /usr/bin/python3 版本较旧&#xff0c;且直接升级系统自带的 Python 版本可能会影响系统稳定性。因此&#xff0c;推荐使用 Homebrew 来安装和管理 Python 及其相关库。本文将详细介绍如何通过 Homebrew 安装和配置 Python 3 及 Tk 库&…...

【机器学习 复习】第2章 线性回归及最大熵模型

一、概念 1.回归就是用一条曲线对数据点进行拟合&#xff0c;该曲线称为最佳拟合曲线&#xff0c;这个拟合过程称为回归。 2.一个自变量 叫 一元线性回归&#xff0c;大于一个自变量 叫 多元线性回归。 &#xff08;1&#xff09;多元回归&#xff1a;两个x&#xff0c;一个…...

关于椭圆的方程(有Python画的动图)

关于椭圆的方程&#xff08;有Python画的动图&#xff09; flyfish 几何定义 椭圆是平面上所有到两个固定点&#xff08;焦点&#xff09;的距离之和为常数的点的集合。这两个固定点叫做焦点。 解析几何描述 设椭圆的两个焦点为 F 1 F_1 F1​ 和 F 2 F_2 F2​&#xff…...

selenium常见难点解决方案

勾选框勾选问题 勾选框代码逻辑实现过程&#xff1a; 第一步&#xff1a;首先找到勾选框的元素&#xff1b; 第二步&#xff1a;检查它是否已经被勾选。如果已经勾选&#xff0c;则进行取消勾选操作&#xff1b;如果未勾选&#xff0c;则进行点击勾选操作&#xff1b; 以下是一…...

【Python高级编程】 综合练习-使用OpenCV 进行视频数据处理

综合练习 读取一个视频文件&#xff0c;对其进行处理后保存为一个新的视频文件。具体的处理步骤包括调整帧大小、转换为灰度图像、垂直翻转画面以及添加高斯噪声。 下面是代码的详细实现&#xff1a; import cv2 import numpy as np# 定义一个函数&#xff0c;用来给图像添加…...

rs232和can的区别

在电机通讯和升级固件时我们经常用到RS232和CAN两种通讯模式&#xff0c;那这两种有何不同吗&#xff1f; RS232和CAN的主要区别在于通信方式、应用场景、传输距离、通信速度以及网络结构。 通信方式&#xff1a; RS232是一种串行通信接口标准&#xff0c;支持全双工通信&…...

嵌入式软件stm32面试

一、STM32的内核型号有哪些&#xff1f; STM32系列是STMicroelectronics&#xff08;意法半导体&#xff09;生产的基于ARM Cortex-M内核的微控制器产品线。这些产品按照不同的内核架构和性能特点分为了主流产品、超低功耗产品和高性能产品。 1.1 主流产品 STM32F0 系列&…...

【Git】-- 添加公钥到 github 或者gitlab上

仅针对系统&#xff1a;mac os 、 unix、linux 1、检查是否有 id_rsa.pub $ cd ~ $ ls -al ~/.ssh 注意&#xff1a;若已有 id_rsa.pub&#xff0c;则必要执行 第二步&#xff0c;避免覆盖掉原有正常的公钥。 配置多个 git 账号请参考&#xff1a;同一台电脑配置多个git账…...

Vue页面生成PDF后调起浏览器打印

一、安装依赖 首先&#xff0c;需要安装 html2canvas 和 jsPDF 库。 npm install html2canvas jspdf二、创建公共方法引入 在utils文件夹下创建两个文件分别为pdfExport.js和printPDF.js&#xff0c;代码如下&#xff1a; pdfExport.js import html2canvas from html2canv…...

纯前端实现导出excel

项目背景&#xff1a; vue2 插件&#xff1a; xlsx&#xff1b;xlsx-style&#xff1b;file-saver 说明&#xff1a; 单独使用 xlsx插件&#xff0c;也可以将网页上的table导出成excel&#xff0c;但是导出的excel&#xff0c;没有样式 结合xlsx-style&#xff1b;file-saver&a…...

设计人才网官网/无锡百度关键词优化

本文章仅代表个人观点&#xff0c;如有错误缺漏&#xff0c;欢迎指正。广义切比雪夫滤波器原型是现在广泛使用的滤波器函数&#xff0c;因其把有切比雪夫滤波器无限元处的传输零点移到有限远处(可以是近带外)&#xff0c;使近带外的抑制特性更好。1.广义切比雪夫滤波器原型由广…...

wordpress 缩略图 截取/如何做一个网页

在实例中引用模式文档XMLSchema提供了两个在实例文档中使用的特殊属性&#xff0c;用于指出模式文档的位置。这两个属性是&#xff1a;xsi:schemaLocation和xsi:noNamespaceSchemaLocation&#xff0c;前者用于声明了目标名称空间的模式文档&#xff0c;后者用于没有目标名称空…...

重庆网站制作公司 /电话营销话术

对于一个 Linux 驱动使一个进程睡眠是一个容易做的事情. 但是, 有几个规则必须记住以安全的方式编码睡眠. 这些规则的第一个是: 当你运行在原子上下文时不能睡眠. 我们在第 5 章介绍过原子操作; 一个原子上下文只是一个状态, 这里多个步骤必须在没有任何类型的并发存取的情况下…...

游戏门户网站 织梦/重庆seo整站优化方案范文

题意&#xff1a;一棵带边权的树&#xff0c;边权可单边修改&#xff0c;问初始时和每次修改后有多少条路径$\gcd1$ 首先考虑用反演求答案&#xff0c;设$f(n)$为路径$\gcdn$的路径条数&#xff0c;$g(n)$为路径$\gcd$是$n$倍数的路径条数&#xff0c;那么$g(n)\sum\limits_{n|…...

南宁seo网站排名优化公司/软文营销代理

由于django的模板渲染机制&#xff0c;图片不能直接引用&#xff0c;否则不会显示。 <img src"/static/img/logo.jpg">      可以看出图片的大小轮廓&#xff0c;但并不显示内容。 解决方法&#xff1a; 第一步 配置setting.py文件 在setting.py随后加上…...

网页设计建立站点实验报告/seo学院培训班

之前使用Hexo的时候&#xff0c;都是在本地进行编译和部署的&#xff0c;平时使用的时候觉得没什么&#xff0c;只需要 hexo ghexo d 两步就可以把博客更新的内容推到GitHub Pages上。但是某些时候可能会遇到你的文件夹中存在一些其他编辑到一半的文章——这时候想要更新博客中…...