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

SpringBoot整合Swagger2,让接口文档管理变得更简单

在软件开发的过程中,接口文档的编写往往是一个非常重要的环节,因为它是前端和后端沟通的桥梁,帮助团队更好地协作。然而,手动编写接口文档不仅耗费时间,还容易出错,因此我们需要一种简单的方法来管理接口文档。在这篇文章中,我将介绍SpringBoot整合Swagger2的简单方法,以帮助您更好地管理接口文档。

1. 什么是Swagger2

在开始介绍SpringBoot整合Swagger2的步骤之前,让我们谈一下Swagger2是什么。Swagger2是一种RESTful API文档生成工具,能够自动化生成API文档,并提供交互式文档,以方便开发人员使用。Swagger2不仅可以生成接口文档,还可以生成模拟数据,以方便前后端协作。

2. 添加Swagger2依赖

在Spring Boot应用中使用Swagger2需要添加如下Maven依赖:

<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>{latest-version}</version>
</dependency>
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>{latest-version}</version>
</dependency>

其中{latest-version}需要替换成最新版本号。

3. 配置Swagger2

配置Swagger2并不困难,只需要增加一个SwaggerConfig类即可,代码如下:

@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket api() {return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build();}
}

其中:

  • @Configuration表示这是一个配置类;
  • @EnableSwagger2表示开启Swagger2的支持;
  • Docket是Swagger2的配置类,用于配置Swagger2的相关信息;
  • DocumentationType.SWAGGER_2表示采用Swagger2的规范;
  • RequestHandlerSelectors.any()表示所有Controller都会被扫描;
  • PathSelectors.any()表示所有路径都会被扫描。

4. 编写接口文档注释

添加好Swagger2依赖和配置类后,接下来我们需要在Controller层的接口方法上编写注释。示例如下:

@RestController
@RequestMapping("/user")
@Api(tags = "用户管理")
public class UserController {@ApiOperation("新增用户")@PostMapping("")public CommonResult addUser(@RequestBody User user) {// ...}@ApiOperation("删除用户")@DeleteMapping("/{id}")public CommonResult deleteUser(@PathVariable Long id) {// ...}@ApiOperation("修改用户")@PutMapping("/{id}")public CommonResult updateUser(@PathVariable Long id, @RequestBody User user) {// ...}@ApiOperation("查询用户详情")@GetMapping("/{id}")public User getUserById(@PathVariable Long id) {// ...}@ApiOperation("查询用户列表")@GetMapping("")public List<User> getUserList() {// ...}
}

在上述代码中:

  • @Api(tags = "用户管理")表示这是一个"用户管理"模块的接口;
  • @ApiOperation("新增用户")表示新增用户的接口;
  • @PostMapping("")表示HTTP请求方法为POST,路径为""。

5. 查看接口文档

添加好接口文档注释后,我们就可以通过访问Swagger2的UI来查看接口文档了。只需要在浏览器中输入"http://localhost:8080/swagger-ui.html",就可以进入Swagger2的UI界面了。接口文档的效果可以参考下图:
在这里插入图片描述

6. 使用Swagger2的高级特性

Swagger2不仅可以生成接口文档,还可以生成模拟数据,以方便前后端协作。通过使用Swagger2的高级特性,我们可以在测试阶段使用模拟数据进行开发,以提高开发效率。以下是一些使用Swagger2高级特性的示例:

  • @ApiModel:用于对响应数据进行注释,表示一个用户对象,包含userName和password字段。
@ApiModel("用户对象")
public class User {@ApiModelProperty(value = "用户名", required = true)private String userName;@ApiModelProperty(value = "密码", required = true)private String password;// ...
}
  • @ApiResponses:用于对响应状态码进行注释。
@ApiOperation("查询用户详情")
@GetMapping("/{id}")
@ApiResponses({@ApiResponse(code = 200, message = "成功"),@ApiResponse(code = 400, message = "请求错误"),@ApiResponse(code = 401, message = "未授权"),@ApiResponse(code = 403, message = "禁止访问"),@ApiResponse(code = 404, message = "资源不存在")
})
public User getUserById(@PathVariable Long id) {// ...
}
  • @ApiModelProperty:用于对请求参数进行注释,表示请求参数为用户名。
@ApiOperation("查询用户")
@GetMapping("")
public List<User> getUserList(@ApiParam(value = "用户名") @RequestParam(required = false) String userName) {// ...
}

7. 总结

通过本文的介绍,我们了解了Swagger2的基本使用方法,并讲解了一些高级特性,让接口文档管理变得更加简单。在项目中使用Swagger2可以有效地提高开发效率,减少接口文档编写的工作量。希望本文对大家在接口文档管理方面有所帮助。

相关文章:

SpringBoot整合Swagger2,让接口文档管理变得更简单

在软件开发的过程中&#xff0c;接口文档的编写往往是一个非常重要的环节&#xff0c;因为它是前端和后端沟通的桥梁&#xff0c;帮助团队更好地协作。然而&#xff0c;手动编写接口文档不仅耗费时间&#xff0c;还容易出错&#xff0c;因此我们需要一种简单的方法来管理接口文…...

socket | 网络套接字、网络字节序、sockaddr结构

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…...

golang-websocket

WebSocket 是一种新型的网络通信协议&#xff0c;可以在 Web 应用程序中实现双向通信。 WebSocket与HTTP协议的主要区别是&#xff1a; HTTP 和 WebSocket 协议的区别 HTTP 是单向的&#xff0c;而 WebSocket 是双向的。 在客户端和服务器之间的通信中&#xff0c;每个来自客…...

Nginx + fastCGI 实现动态网页部署

简介 本文章主要介绍下&#xff0c;如何通过Nginx fastCGI来部署动态网页。 CGI介绍 在介绍fastCGI之前先介绍下CGI是什么。CGI : Common Gateway Interface&#xff0c;公共网关接口。在物理层面上是一段程序&#xff0c;运行在服务器上&#xff0c;提供同客户端HTML页面的…...

精彩回顾 | Fortinet Accelerate 2023·中国区巡展厦门站

Fortinet Accelerate 2023中国区 5月16日&#xff0c;Fortinet Accelerate 2023中国区巡展来到魅力“鹭岛”——厦门&#xff0c;技术、产品和业务专家&#xff0c;携手亚马逊云科技、唯一网络等云、网、安合作伙伴&#xff0c;与交通、物流、金融等各行业典型代表客户&#x…...

ChatGPT 和对话式 AI 的未来:2023 年的进展和应用

人工智能(Artificial Intelligence)在过去一段时间以来以前所未有的速度快速发展。从自动化日常任务到重要提醒的设定,AI以各种方式渗透到我们的生活中。然而,在这个领域中迈出的最重要一步是ChatGPT。 ChatGPT被瑞银(UBS)评为“有史以来增长最快的消费者应用程序”,于…...

Nginx配置WebSocket(WS)和WebSocket Secure(WSS)的完整指南

&#x1f600;点点关注~ &#x1f600;点点关注~ &#x1f600;点点关注~ Nginx是一款广泛使用的高性能Web服务器和反向代理服务器。除了传统的HTTP和HTTPS协议支持外&#xff0c;Nginx还可以配置WebSocket&#xff08;WS&#xff09;和WebSocket Secure&#xff08;WSS&…...

链表--part 1--链表基础理论(概括)

文章目录 单链表双链表循环链表链表链表的定义删除节点增加节点 首先什么是链表&#xff0c;链表是一种通过指针串联在一起的线性结构&#xff0c;每一个节点由两部分组成&#xff0c;一个是数据域一个是指针域&#xff08;存放指向下一个节点的指针&#xff09;&#xff0c;最…...

【V2G】电动汽车接入电网优化调度研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Excel中时间戳与标准日期格式的互相转换

背景 在excel中将13位毫秒级别的时间戳转换为标准的日期格式(yyyy-mm-dd hh:mm:ss.000)&#xff0c;使用如下模板 TEXT(<source_cell>/1000/8640070*36519,"yyyy-mm-dd hh:mm:ss.000") 在excel中将10位秒级别的时间戳转换为标准的日期格式(yyyy-mm-dd hh:mm:ss…...

【Kafka集群】Kafka针对用户做ACL权限控制

在 Kafka 3.3.1 中&#xff0c;可以使用 ACL&#xff08;Access Control List&#xff09;控制用户对 topic 的访问权限。以下是一些基本示例&#xff1a; 创建一个名为 my-topic 的 topic 在命令行中执行以下命令创建一个名为 my-topic 的 topic&#xff1a; kafka-topics.…...

国内外数据安全治理框架介绍与分析

本文将介绍和分析:微软 DGPC框架,Gartner 数据安全治理框架 DSG,数据安全能力成熟度模型 DSMM 数据治理与数据安全治理系列文章 https://luozhonghua.blog.csdn.net/article/details/130417106 数据安全治理流程设计_luozhonghua2000的博客-CSDN博客 数据治理解决之道探讨…...

【Nodejs】使用Nodejs搭建HTTP服务,并实现公网远程访问

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 转载自内网穿透工具的文章&#xff1a;使用Nodejs搭建HTTP服务&#xff0c;并实现公网远程访问「内网穿透」 前言 Node.js…...

面试题之介绍自己测试的项目,担任的角色和做出的成果

在测试面试过程中&#xff0c;面试官想要了解一个同学对项目的掌握程度或一些例如沟通总结的软技能情况&#xff0c;该怎么考察呢&#xff1f; 一个具有代表性的题目来了&#xff1a;简单介绍一下自己测试的项目,担任的角色和做出的成果。 一、面试官角度 1、考察是否真正做过该…...

HTB靶机012-Valentine-WP

012-Valentine 靶机IP&#xff1a;10.10.10.79 Scan nmap端口扫描&#xff1a; ┌──(xavier㉿kali)-[~] └─$ sudo nmap -sSV -T4 10.10.10.79 -F Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-29 00:47 CST Nmap scan report for 10.10.10.79 Host is up (0.30s…...

微信小程序nodejs+vue社区居民健康服务系统uniapp

系统分为社区居民&#xff0c;管理员&#xff0c;县区工作员&#xff0c;社区工作员三个角色 县区工作员的主要功能&#xff1a; 1.对社区的工作人员进行添加&#xff0c;修改&#xff0c;删除&#xff0c;查询 2.疫情专栏的信息进行添加&#xff0c;修改&#xff0c;删除&…...

尝试探索水下目标检测,基于yolov5轻量级系列模型n/s/m开发构建海底生物检测系统

其实&#xff0c;水下目标检测相关的项目早在之前就已经做了几个了&#xff0c;但是没有系统性地对比过&#xff0c;感兴趣的话可以先看下之前的文章&#xff0c;如下&#xff1a; 《基于自建数据集【海底生物检测】使用YOLOv5-v6.1/2版本构建目标检测模型超详细教程》 《基于…...

大数据Doris(二十四):Doris数据Insert Into导入方式介绍

文章目录 Doris数据Insert Into导入方式介绍 一、语法及参数 二、案例 三、注意事项 1、关于插入数据量 2、关于insert操作返回结果 3、关于导入任务超时 4、关于Session变量 5、关于数据导入错误 Doris数据Insert Into导入方式介绍 Doris 提供多种数据导入方案&…...

macOS Ventura 13.5beta (22G5027e)发布

系统介绍 黑果魏叔 5 月 20 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.5 开发者预览版 Beta 更新&#xff08;内部版本号&#xff1a;22G5027e&#xff09;&#xff0c;本次更新距离上次发布隔了 17 天。 macOS Ventura 带来了台前调度、连续互通相机、Face…...

基于SpringBoot的财务管理系统的设计与实现

背景 财务管理系统能够通过互联网得到广泛的、全面的宣传&#xff0c;让尽可能多的员工了解和熟知财务管理系统的便捷高效&#xff0c;为管理者和员工提供了服务&#xff0c;节省人力、物力和时间&#xff0c;提高工作效率。 系统设计 为了更好的去理清本系统整体思路&#…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

华为OD机考-机房布局

import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

Pydantic + Function Calling的结合

1、Pydantic Pydantic 是一个 Python 库&#xff0c;用于数据验证和设置管理&#xff0c;通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发&#xff08;如 FastAPI&#xff09;、配置管理和数据解析&#xff0c;核心功能包括&#xff1a; 数据验证&#xff1a;通过…...

yaml读取写入常见错误 (‘cannot represent an object‘, 117)

错误一&#xff1a;yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因&#xff0c;后面把yaml.safe_dump直接替换成yaml.dump&#xff0c;确实能保存&#xff0c;但出现乱码&#xff1a; 放弃yaml.dump&#xff0c;又切…...

用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法

用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...