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

news2024/12/26 3:11:57

在软件开发的过程中,接口文档的编写往往是一个非常重要的环节,因为它是前端和后端沟通的桥梁,帮助团队更好地协作。然而,手动编写接口文档不仅耗费时间,还容易出错,因此我们需要一种简单的方法来管理接口文档。在这篇文章中,我将介绍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 {
    @Bean
    public 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可以有效地提高开发效率,减少接口文档编写的工作量。希望本文对大家在接口文档管理方面有所帮助。

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

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

相关文章

宝武中南钢铁借助飞桨让钢筋超限监控有了“火眼金睛”

现代钢铁工业生产过程是一个复杂而庞大的生产体系&#xff0c;涵盖数百道工序。 在70多年的发展历程中&#xff0c;炼钢、轧钢、连铸以及节能减排等各项技术不断进化&#xff0c;无一不印证了中国钢铁在技术创新之路上获得的持续性突破。如今&#xff0c;宝武中南钢铁&#xff…

Java websocket 使用

简介 WebSocket 是一种基于 TCP 协议的全双工通信协议&#xff0c;可以在浏览器和服务器之间建立实时、双向的数据通信。在 Java 中&#xff0c;我们可以使用 Java API for WebSocket&#xff08;JSR 356&#xff09;来实现 WebSocket。 WebSocket 的作用是在 Web 应用程序中…

基于html+css的图展示77

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Charles安装及抓取APP接口

一、Charles使用 Charles是一款代理服务器&#xff0c;通过过将自己设置成系统&#xff08;电脑或者浏览器&#xff09;的网络访问代理服务器&#xff0c;然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的&#xff0c;能够在Windows&#xff0c;Mac&#xff0c;…

STM32F4_DAC数模转换

目录 1. DAC简介 2. DAC框图 3. DAC功能介绍 3.1 DAC通道使能 3.2 DAC输出缓冲器使能 3.3 DAC数据格式 3.4 DAC转换 3.5 DAC输出电压 3.6 DAC触发选择 3.7 DMA请求 3.8 生成噪声 3.9 生成三角波 4. 相关寄存器 4.1 DAC控制寄存器&#xff1a;DAC_CR 4.2 DAC1通道…

1-《java基础》

1-《java基础》 一.java基本数据类型和引用类型1.基本数据类型&#xff1a;2.引用数据类型3.基本数据类型和引用数据类型区别3.1 存储位置3.2 传递方式 4.自动装箱&#xff0c;自动拆箱 二.equals和的区别三.static1.static关键字的用途2.static方法3.static变量4.static代码块…

Unity中级客户端开发工程师的进阶之路

上期UWA技能成长系统之《Unity高级客户端开发工程师的进阶之路》得到了很多Unity开发者的肯定。通过系统的学习&#xff0c;可以掌握游戏性能瓶颈定位的方法和常见的CPU、GPU、内存相关的性能优化方法。 UWA技能成长系统是UWA根据学员的职业发展目标&#xff0c;提供技能学习的…

加密解密软件VMProtect教程(六):主窗口之控制面板“项目”部分(3)

VMProtect 是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C、Visual Basic&#xff08;本机&#xff09;、Virtual Pascal和XCode编译器。 同时&#xff0c;VMProtect有一个内置的反汇编程序&#xff0c;可以与Windows和Mac OS X可执行文件一起…

wpf字符串格式化来实现空格占位 对齐问题Arial字符宽度不一致ChitGPT真牛

console是正常的。xml界面不正常&#xff0c;对不齐。 可能的原因各字符宽度不一致导致的。换个字体试试。黑体就正常。默认的Arial就不对。 在 C# 中&#xff0c;可以使用字符串格式化来实现空格占位。具体的做法是在格式字符串中使用占位符 {n}&#xff0c;其中 n 表示要占用…

一单一结,靠Python爬虫赚外快,在家就能做

今年以来我们听到了太多负面声音&#xff0c;“互联网寒冬”“裁员”“优化”“失业”&#xff0c;同时也听到了许多朋友迷茫的声音&#xff1a; 面对未来的焦虑&#xff1a;未来我应该往哪方面发展&#xff1f; 面对裁员的迷茫&#xff1a;被裁&#xff0c;下一份工作如何选…

Playwright系列:第11章 CI/CD集成(Jenkins/Gitlab)

下方查看历史精选文章 重磅发布 - 自动化框架基础指南pdfv1.1大数据测试过程、策略及挑战 测试框架原理&#xff0c;构建成功的基石 在自动化测试工作之前&#xff0c;你应该知道的10条建议 在自动化测试中&#xff0c;重要的不是工具 CI/CD即持续集成/持续交付,是软件开发的一…

UDP通信相关

Linux网络编程-UDP单播服务客户端代码实现 1、服务端 只接收一个字符串 #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h> #include <errno.h> #include <unistd.h> #include <sys/types.h> #…

部署问题集合(十四)VMware复制完整的虚拟机

前言&#xff1a; 由于原先的服务器内存和磁盘空间都不太够&#xff0c;所以需要将其中的程序部署到新的服务器上但部署过程总因为各种奇奇怪怪的问题报错&#xff0c;所以干脆想着将整个虚拟机都复制到新的服务器上&#xff0c;这样需要改动的东西最少&#xff0c;仅需要处理…

黄金圈法则/思维

黄金圈法则/思维 美国作家西蒙.斯涅克因&#xff08;国际知名广告、营销专家&#xff09;在TED演讲中提出黄金圈法则而一举扬名。 模型介绍 黄金圈法则的核心思想是&#xff1a;在沟通表达的时候&#xff0c;按照一个特定的结构why->how->what进行表达。它本质也是一种思…

乔哈里窗模型

乔哈里窗由心理学家乔瑟夫和哈里在20世纪50年代提出的&#xff0c;也常被称之为"自我意识的发现/反馈模型”&#xff0c;或“信息交流过程管理工具”。 模型介绍 该模型把人的内心信息分成四个区域&#xff0c;即&#xff1a; 第一个区域&#xff0c;我知道&#xff0c;你…

104. 二叉树的最大深度

104. 二叉树的最大深度 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 104. 二叉树的最大深度 https://leetcode.cn/problems/maximum-depth-of-binary-tree/ 完成情况&#xff1a; 解题思路&#xff1a; //想…

【开发者指南】如何在MyEclipse中使用HTML或JSP设计器?(上)

MyEclipse v2022.1.0正式版下载 一、HTML & JSP 可视化设计器 本文简要介绍了 MyEclipse HTML 和 JSP Web 设计器的概念、功能和基本操作过程。这两个设计器具有相似的功能和相同的操作模型&#xff0c;但本文为专门针对其类型的内容。本文档中的示例是使用 MyEclipse HT…

国货大佬“卡脖子”后王者风范不减?小米卷出光学拍摄“天花板”?| 手机行业社媒心智品牌榜出炉

Social Power 核心解读 1、智能手机“乍暖还寒”&#xff0c;龙头品牌仍稳占消费者心智 比拼屏幕、赶超系统、迭代形态、拓展概念&#xff1f;眼花缭乱过后&#xff0c;产品精益求精&#xff0c;建立稳固的消费者认知&#xff0c;才是“保鲜”关键。在最新发布的数说故事5月…

Text-to-SQL提示工程【Prompt Engineering】

我们刚刚启动了一个开源项目pg-text-query&#xff0c;目标是为文本到 SQL 制作生产就绪的大型语言模型 (LLM) 提示。 我们的目标是 利用 LLM、我们自己对 PostgreSQL 数据库的深入了解以及严格的测试来开发一流的文本到 SQL 的翻译。 推荐&#xff1a;用 NSDT设计器 快速搭建…

T-GCN:用于交通流预测的时序图卷积网络

1.文章信息 本次介绍的文章是2020年发表在IEEE 智能交通系统汇刊上的《T-GCN: A Temporal Graph Convolutional Network for Traffic Prediction》。 2.摘要 为了同时捕获空间和时间依赖性&#xff0c;本文提出了一种新的基于神经网络的交通流预测方法——时间图卷积网络(T-GCN…