SpringBoot3整合OpenAPI3(Swagger3)

文章目录

  • 一、引入依赖
  • 二、使用
      • 1. @OpenAPIDefinition + @Info
      • 2. @Tag
      • 3. @Operation
      • 4. @Parameter
      • 5. @Schema
      • 6. @ApiResponse

swagger2更新到3后,再使用方法上发生了很大的变化,名称也变为OpenAPI3

官方文档

一、引入依赖

            <dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>${springdoc-openapi.version}</version></dependency>
server:servlet:context-path: /content
springdoc:api-docs:enabled: truepath: /v3/api-docsswagger-ui:enabled: truepath: /swagger-ui.html

openapi3使用十分方便,做到这里后,你可以直接通过以下网址访问swagger页面。

http://<ip>:<port>/content/swagger-ui/index.html

在这里插入图片描述

二、使用

1. @OpenAPIDefinition + @Info

用于定义整个 API 的信息,通常放在主应用类上。可以包括 API 的标题、描述、版本等信息。

@SpringBootApplication
@Slf4j
@OpenAPIDefinition(info = @Info(title = "内容管理系统", description = "对课程相关信息进行管理", version = "1.0.0"))
public class ContentApplication {public static void main(String[] args) {SpringApplication.run(ContentApplication.class, args);}
}

2. @Tag

用于对 API 进行分组。可以在控制器类或方法级别上使用。

@Tag(name = "课程信息编辑接口")
@RestController("content")
public class CourseBaseInfoController {
}

3. @Operation

描述单个 API 操作(即一个请求映射方法)。可以提供操作的摘要、描述、标签等。

    @Operation(summary = "课程查询接口")@PostMapping("/course/list")public PageResult<CourseBase> list(PageParams params,@RequestBody(required = false) QueryCourseParamsDto dto){CourseBase courseBase = new CourseBase();courseBase.setCreateDate(LocalDateTime.now());return new PageResult<CourseBase>(new ArrayList<CourseBase>(List.of(courseBase)),20, 2, 10);}

在这里插入图片描述

4. @Parameter

用于描述方法参数的额外信息,例如参数的描述、是否必需等。

    @Operation(summary = "课程查询接口")@PostMapping("/course/list")public PageResult<CourseBase> list(@Parameter(description = "分页参数") PageParams params,@Parameter(description = "请求具体内容") @RequestBody(required = false) QueryCourseParamsDto dto){CourseBase courseBase = new CourseBase();courseBase.setCreateDate(LocalDateTime.now());return new PageResult<CourseBase>(new ArrayList<CourseBase>(List.of(courseBase)),20, 2, 10);}

在这里插入图片描述

5. @Schema

描述模型的结构。可以用于类级别(标注在模型类上)或字段级别。

@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageParams {//当前页码@Schema(description = "页码")private Long pageNo = 1L;//每页记录数默认值@Schema(description = "每页条目数量")private Long pageSize =10L;
}

在这里插入图片描述

6. @ApiResponse

描述 API 响应的预期结果。可以指定状态码、描述以及返回类型。

@ApiResponse(responseCode = "200", description = "Successfully retrieved user")
public User getUserById(@PathVariable Long id) {
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/638352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

汇编语言学习1

Compiler Explorer (godbolt.org) 这个网站可以把我们写的C语言等实时翻译为汇编等语言&#xff0c;便于参考 一个不错的视频讲解 riscv(RISC-V)指令集(MIT) A01 Introduction_哔哩哔哩_bilibili risc-v汇编中&#xff0c;a0, a1, ... 用来传送函数参数&#xff0c;a0, a1用来…

深度解析Python关键字:掌握核心语法的基石(新版本35+4)

目录 关键字 keyword 关键字列表 kwlist softkwlist 关键字分类 数据类型 True、False None 运算类型 and、or、not in is 模块导入 import 辅助关键字 from、as 上下文管理 with 占位语句 pass 流程控制 if、elif、else for while break、continue…

【AI】深度学习在编码中的应用(8)

接上文&#xff0c;本文来梳理和学习智能编码中&#xff0c; 基于残差编码的框架。 智能图像编解码器的成功也推动了智能视频编解码器的发展。传统的视频压缩方法依靠预测编码对运动信息和残差信息分别进行编码。根据时-空域冗余消除方式和阶段不同&#xff0c;现有相关方法可…

字符串操作scanf与gets的区别

在c语言中对于字符串的输入 scanf char str[20]; scanf("%s",str); gets char str[20]; gets(str); 区别&#xff1a; 1. scanf不能获取空格之后的字符串 例如&#xff1a; "how are you" 使用scanf("%s",str)只能获取到 "how&q…

常见异常类及异常对象属性

程序运行的过程中&#xff0c;会发生各种非正常状况&#xff0c;比如程序运行时磁盘空间不足&#xff0c;网络连接中断&#xff0c;被操作的文件不存在。(异常在程序运行时发生)   针对这种情况下&#xff0c;C#程序引入了异常处理机制&#xff0c;通过异常处理机制对程序运行…

第十回 朱贵水亭施号箭 林冲雪夜上梁山-FreeBSD/Linux 控制台基础操作

林冲被众庄客捉住&#xff0c;吊在门楼下&#xff0c;正被打时&#xff0c;柴进来了&#xff0c;赶快把林冲救下来。原来这是柴进打猎用的小庄子&#xff0c; 林冲就把火烧草料场一事跟柴进详细的说了。柴进说兄弟真是命运多磨难啊。林冲住了几日&#xff0c;恐怕连累柴进&…

柠檬微趣面试准备

简单介绍一下spring原理 Spring框架是一个开源的Java应用程序框架&#xff0c;它提供了广泛的基础设施支持&#xff0c;帮助开发者构建Java应用程序。Spring的设计原则包括依赖注入&#xff08;DI&#xff09;和面向切面编程&#xff08;AOP&#xff09;等&#xff0c;以促使代…

rust嵌入式之用类函数宏简写状态机定义

笔者一向认为&#xff0c;用有限状态自动机来做硬件控制是最好的选择&#xff0c;同时又倾向于用文本定义来定义状态机是更好的做法。所以此次用rust开发嵌入式自然也是如此。 状态机实现起来很简单&#xff0c;关键是用文本来定义状态机&#xff0c;在rust中&#xff0c;自然…

Laykefu客服系统 任意文件上传漏洞复现

0x01 产品简介 Laykefu 是一款基于workerman+gatawayworker+thinkphp5搭建的全功能webim客服系统,旨在帮助企业有效管理和提供优质的客户服务。 0x02 漏洞概述 Laykefu客服系统/admin/users/upavatar.html接口处存在文件上传漏洞,而且当请求中Cookie中的”user_name“不为…

[学习笔记]刘知远团队大模型技术与交叉应用L3-Transformer_and_PLMs

RNN存在信息瓶颈的问题。 注意力机制的核心就是在decoder的每一步&#xff0c;都把encoder的所有向量提供给decoder模型。 具体的例子 先获得encoder隐向量的一个注意力分数。 注意力机制的各种变体 一&#xff1a;直接点积 二&#xff1a;中间乘以一个矩阵 三&#xff1a;…

找不到vcruntime140_1.dll无法继续执行怎么办?全面分析修复方法

当系统提示vcruntime140_1.dll文件出现错误时&#xff0c;可能会引发一系列影响计算机正常运行的问题。这个特定的动态链接库文件&#xff08;DLL&#xff09;是Microsoft Visual C Redistributable的一部分&#xff0c;对于许多基于Windows的应用程序来说至关重要。一旦vcrunt…

如何在供应链管理中有效管理供应商和采购成本

一、管理供应商 在供应链管理中,供应商的管理是至关重要的环节。有效的供应商管理不仅可以确保稳定的原材料供应,还可以降低采购成本,提高企业的竞争力。以下是一些管理供应商的有效方法: 供应商评估与选择在选择供应商之前,企业需要对潜在供应商进行全面的评估。评估标准…

回归预测 | Python基于ALO-BiGRU蚁狮优化算法优化双向BiGRU多变量回归预测+适应度曲线+多个评价指标

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 ALO算法是Mirjalili于2015提出的一种新型元启发式群智能算法。由于引入了随机游走、轮盘赌策略及精英策略&#xff0c;使得 ALO 算法成为一种种群多样、寻优性能强、调节参数少、易于实现的搜索技术 python代码 优化参…

JS之Math

一提到数学&#xff0c;就想到被数学支配的噩梦&#xff0c;只不过这个数学用在了代码当中&#xff0c;那么代码当中的数学对象又是什么样的呢&#xff1f;让我为大家简单介绍一下吧&#xff01; 数学对象常用方法&#xff1a; 常用方法简述ceil向上取整floor向下取整round四舍…

线段树详解

什么是线段树&#xff1f; 1、线段树是一棵二叉搜索树&#xff0c;它储存的是一个区间的信息。 2、每个节点以结构体的方式存储&#xff0c;结构体包含以下几个信息&#xff1a; 区间左端点、右端点&#xff1b;&#xff08;这两者必有&#xff09; 这个区间要维护的信息&…

【leetcode】移除元素

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家刷题&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一.暴力求解法二.使用额外数组三.原地修改数组 点击查看题目 一.暴力求解法 若我们不考虑时间复杂度…

【题目】2023年国赛信息安全管理与评估正式赛任务书-模块3 CTF

全国职业院校技能大赛 高等职业教育组 信息安全管理与评估 任务书 模块三 网络安全渗透、理论技能与职业素养 竞赛相关资源资料可在文末关注公众号获得 比赛时间及注意事项 本阶段比赛时长为180分钟&#xff0c;时间为9:00-12:00。 【注意事项】 &#xff08;1&#xf…

算法优化:LeetCode第122场双周赛解题策略与技巧

接下来会以刷常规题为主 &#xff0c;周赛的难题想要独立做出来还是有一定难度的&#xff0c;需要消耗大量时间 比赛地址 3011. 判断一个数组是否可以变为有序 public class Solution {public int minimumCost(int[] nums) {if (nums.length < 3) {// 数组长度小于3时&a…

UG制图-创建图纸的多种方法

1、2D&#xff1a;创建独立2D图纸&#xff0c;不引用任何3D模型 在UG软件中选择新建&#xff0c;或者快捷键ctrl N&#xff0c;进入新建命令&#xff0c;然后点击图纸&#xff0c;在关系中选择独立的部件&#xff0c;就创建了一个独立的图纸&#xff0c;我们可以在装配中添加…

项目管理该考哪个证书❓NPDP还是软考❓

有小伙伴在纠结是要考NPDP认证呢还是考软考呢❓ 今天小编要给大家好好说说NPDP认证❗️ &#x1f4a1;NPDP全称New Product Development Professional&#xff0c;也就是产品经理国际资格认证。 &#x1f525;NPDP是国际公认的为一的新产品开发专业认证&#xff0c;是集理论、方…