SpingBoot中使用Swagger快速生成接口文档

news2024/12/25 10:21:48


目录

一.Swagger快速上手

二.Swagger中的基本注解

三.使用Swagger进行测试


一.Swagger快速上手

Swagger是⼀个接⼝⽂档⽣成⼯具,它可以帮助开发者⾃动⽣成接⼝⽂档。当项⽬的接⼝发⽣变更时,Swagger可以实时更新⽂档,确保⽂档的准确性和时效性。Swagger还内置了测试功能,开发者可以直接在⽂档中测试接⼝,⽆需编写额外的测试代码。

使用起来也很简单,直接引入其依赖即可

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

依赖引入后即可进行相应的配置,如下就是一个简单的配置示例,你可以在这个配置项中声明接口文档的名称以及相关的描述,这些描述并不是必须的,可以省略。

@Configuration
public class SwaggerConfig {
    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("在线oj系统")
                        .description("在线oj系统接⼝⽂档")
                        .version("v1"));
    }
}

如果你使用的是微服务的架构,为了使该配置项在其他服务中也生效,则需要声明该配置项的位置。即如下图所示在 resource包下声明该配置类的路径。

然后启动项目,访问swagger-ui即可看见当前项目中接口的信息了

同时这些接口中也包含了自动测试的方法,我们点击即可一键进行测试


二.Swagger中的基本注解

为了使该接口文档更丰富,我们可以使用swagger为我们提供的一些基本注解来进行一些自定义的申明,以下是一些常用的注解

@Tag

介绍:⽤于给接⼝分组,⽤途类似于为接⼝⽂档添加标签。

⽤于:⽅法、类、接⼝。

常⽤属性:

name:分组的名称

 如下代码,就是使用了@Tag为整个Controller进行了统一的命名分组。

@RestController
@RequestMapping("/sysUser")
@Tag(name = "管理员用户API")
public class SysUserController {
    //... ...
}

@Operation

介绍:⽤于描述接⼝的操作。

⽤于:⽅法。

常⽤属性:

summary:操作的摘要信息。

description:操作的详细描述。

@Parameters

介绍:⽤于指定@Parameter注解对象数组,描述操作的输⼊参数。

⽤于:⽅法。

@Parameter

介绍:⽤于描述输⼊参数。

⽤于:⽅法。

常⽤属性:

name:参数的名称。

in:参数的位置,可以是 path、query、header、cookie 中的⼀种。

description:参数的描述。

@ApiResponse

介绍:⽤于描述操作的响应结果.

⽤于:⽅法。

常⽤属性:

responseCode:响应的状态码。

description:响应的描述。

就拿下面这个示例来说

  • @Operation注解就申明了这个接口是用来查询用户详情的
  • @Parameters注解表明了这个接口需要传入的参数,其中@parameter用于修饰每一个参数
  • @ApiResponse注解则申明了需要给前端返回怎么样的数据,状态码以及对应的信息
/**
 * 根据条件查询管理员用户
 *
 * @param userId
 * @param sex
 * @return
 */
@GetMapping("/detail")
@Operation(summary = "⽤⼾详情", description = "根据查询条件查询⽤⼾详情")
@Parameters(value = {
        @Parameter(name = "userId", in = ParameterIn.QUERY, description = "⽤⼾ID"),
        @Parameter(name = "sex", in = ParameterIn.QUERY, description = "⽤⼾性别")
})
@ApiResponse(responseCode = "1000", description = "成功获取⽤⼾信息")
@ApiResponse(responseCode = "2000", description = "服务繁忙请稍后重试")
@ApiResponse(responseCode = "3101", description = "⽤⼾不存在")
public R<SysUserVO> detail(@RequestParam(required = true) Long userId, @RequestParam(required = false) String sex) {
    return null;
}

 @Schema

介绍:⽤于描述数据模型的属性。

⽤于:⽅法、类、接⼝。

常⽤属性:

description:响应的描述。

如下是个实体类用来封装数据,使用了@Schema注解对字段进行了描述 

@Getter
@Setter
public class SysUserVO {
    
    @Schema(description = "用户账号")
    private String userAccount;
    
    @Schema(description = "用户昵称")
    private String nickName;
}

三.使用Swagger进行测试

Swagger还为我们提供了一个非常使用的功能就是对接口进行一键测试,通过这个功能,我们就不用自己写测试代码了。

我们只需要点击这里的 Try it out 即可一键自测。

 然后手动设置传递的参数,之后点击执行Execute即可

在下方也可以看见相应的结果




 本次的分享就到此为止了,希望我的分享能给您带来帮助,创作不易也欢迎大家三连支持,你们的点赞就是博主更新最大的动力!如有不同意见,欢迎评论区积极讨论交流,让我们一起学习进步!有相关问题也可以私信博主,评论区和私信都会认真查看的,我们下次再见

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

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

相关文章

【神经网络系列(高级)】神经网络Grokking现象的电路效率公式——揭秘学习飞跃的秘密【通俗理解】

【通俗理解】神经网络Grokking现象的电路效率公式 论文地址&#xff1a; https://arxiv.org/abs/2309.02390 参考链接&#xff1a; [1]https://x.com/VikrantVarma_/status/1699823229307699305 [2]https://pair.withgoogle.com/explorables/grokking/ 关键词提炼 #Grokkin…

组合优化与凸优化 学习笔记3 凸函数

目前学到了73页 凸函数的定义&#xff1a; 人话&#xff1a;函数f的定义域是凸集&#xff08;在一般的情况下就是不能是断开的定义域&#xff08;一般的情况是1维的嘛&#xff09;&#xff0c;假如x是什么多维向量的话就是说x的取值范围是一个凸集内&#xff09;&#xff0c;并…

基于云原生向量数据库 PieCloudVector 的 RAG 实践

近年来&#xff0c;人工智能生成内容&#xff08;AIGC&#xff09;已然成为最热门的话题之一。工业界出现了各种内容生成工具&#xff0c;能够跨多种模态产生多样化的内容。这些主流的模型能够取得卓越表现&#xff0c;归功于创新的算法、模型规模的大幅扩展&#xff0c;以及海…

XXL-JOB调度中心与执行器

XXL-JOB是一个轻量级的分布式任务调度平台&#xff0c;主要由调度中心和执行器两部分组成。下面详细讲解调度中心与执行器的功能和作用。 调度中心 调度中心是XXL-JOB的核心组件&#xff0c;负责任务的调度管理。其主要功能包括&#xff1a; 任务管理&#xff1a;调度中心提供…

计算组合数:scipy.special.comb()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 计算组合数&#xff1a; scipy.special.comb() 选择题 以下代码两次输出的结果是&#xff1f; from scipy.special import comb print("【执行】print(comb(3,2))") print(comb(3…

011. Oracle-约束

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

小白学装修 之 硬装阶段

在准备阶段 了解了 装修的基本概念 顺利收房 进行了需求和预算的大致规划 并且完成了简单的自主设计接下来就是带着自己的设计图 预算和想法 去找公司或者施工方了 找施工方 可以是 设计师和施工方分开找 也可以找有设计的装修公司 或者 有施工能力的设计室都行 但不 管哪…

【#第三期实战营闯关作业 ## 茴香豆:企业级知识库问答工具】

今天学习了《 茴香豆&#xff1a;企业级知识库问答工具》这一课&#xff0c;对大模型的应用有了更深得认识。以下是记录本课实操过程及截图&#xff1a; 搭建茴香豆虚拟环境&#xff1a; 输入以下命令 studio-conda -o internlm-base -t huixiangdou 成功安装虚拟环境截图 …

OpenAI gym CarRacing-v2 episode termination

题意&#xff1a;OpenAI Gym CarRacing-v2 赛道终止处理 问题背景&#xff1a; I am using gym0.26.0 library and am trying to understand what means that an episode is finished/done in the CarRacing-v2 environment. In the documentation is written this. 我正在使…

用Python实现时间序列模型实战——Day 12: 状态空间模型

一、学习内容 1. 状态空间模型的基本概念 状态空间模型是一种用于时间序列分析的强大工具&#xff0c;能够描述具有潜在状态动态变化的系统。该模型通过显式地建模时间序列中的潜在状态&#xff08;即隐藏变量&#xff09;&#xff0c;能够捕捉复杂的动态结构&#xff0c;适用…

如何选择合适的变压吸附制氧设备

在选择合适的变压吸附(Pressure Swing Adsorption, PSA)制氧设备时&#xff0c;需要综合考虑多个因素以确保设备能够高效、稳定地运行&#xff0c;满足特定应用场景的需求。以下是一些关键步骤和考虑因素&#xff0c;帮助您做出明智的决策。 1. 明确应用需求 明确您的制氧需求至…

GNU_HASH确定函数地址

前言&#xff1a; 最近看了以下pwntoos的DynELF方法&#xff0c;对其中是如何获取到函数地址的过程很感兴趣&#xff0c;就研究了一下&#xff0c;对通过DT_GNU_HASH获取函数地址的过程有了比较清晰的了解 漏洞&#xff1a; 我这里使用2013-PlaidCTF进行测试&#xff0c;首先…

DeepDFA: 受控制流分析驱动的有效深度漏洞检测

目前基于深度学习的漏洞检测中性能最高的方法使用的是基于 token 的 transformer 模型&#xff0c;这对于捕捉漏洞检测所需的代码语义来说并不是最有效的。文中设计了一个受数据流分析启发的图学习框架 DeepDFA&#xff0c;以及一种能让图学习模拟数据流计算的嵌入技术。其训练…

打造温馨家居,全屋智能家居解决方案

智能家居全屋解决方案覆盖全屋照明、温度、娱乐影音等各种常见的日常生活需求、可通过一键设置联动场景来控制自己的家、也可通过语音对话来操控家中的照明、电器及各种场景模式任意切换&#xff0c;一键升级自己的智能家。 1.入户解决方案 通过智能指纹锁穿过玄关、进入大厅、…

贴心服务,一路随行:用友BIP商旅云6.0推出客服中心

在全球经济日益一体化的今天&#xff0c;企业商旅活动频繁且复杂&#xff0c;对高效、专业的客户服务需求与日俱增。为了精准对接企业商旅管理的需求与挑战&#xff0c;用友BIP商旅云6.0创新性地推出了客服中心&#xff0c;以全方位、全天候的贴心服务&#xff0c;为企业商旅活…

OpenObserve云原生可观测平台本地Docker部署与远程访问实战教程

文章目录 前言1. 安装Docker2. Docker镜像源添加方法3. 创建并启动OpenObserve容器4. 本地访问测试5. 公网访问本地部署的OpenObserve5.1 内网穿透工具安装5.2 创建公网地址 6. 配置固定公网地址 前言 本文主要介绍如何在Linux系统使用Docker快速本地化部署OpenObserve云原生可…

html 页面引入 vue 组件之 http-vue-loader.js

一、http-vue-loader.js http-vue-loader.js 是一个 Vue 单文件组件加载器&#xff0c;可以让我们在传统的 HTML 页面中使用 Vue 单文件组件&#xff0c;而不必依赖 Node.js 等其他构建工具。它内置了 Vue.js 和样式加载器&#xff0c;并能自动解析 Vue 单文件组件中的所有内容…

运维学习————Jenkins(1)

目录 一、项目开发周期 二、jenkins的简介和作用 三、jenkins下载 1、使用war包安装 2、初始化配置 3、工作流程图 4、Jenkins安装配置maven和git maven git 5、jenkins安装插件 6、配置maven,git,jdk jdk配置 Git配置 Maven配置 四、修改tomcat的一些配置 五…

《Nginx怎么部署vue项目》

推荐学习文档 nginx https配置ssl证书实现访问https服务Nginx实现404页面的配置方法 在开始部署之前&#xff0c;我们先要准备好以下工作&#xff1a; 一个能跑通的Vue项目一个正常的、安装了nginx的服务器&#xff08;可以是本地电脑&#xff09;服务器上安装了Node.js&…

java设计模式day02--(创建型模式:工厂模式、原型模式、建造者模式)

4&#xff0c;创建型模式 4.2 工厂模式 4.2.1 概述 需求&#xff1a;设计一个咖啡店点餐系统。 设计一个咖啡类&#xff08;Coffee&#xff09;&#xff0c;并定义其两个子类&#xff08;美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】&#xff09;&#xff1b;再设…