SpringBoot-SpringBoot整合Swagger使用教程(图文介绍,一篇就够了)

前言

日常开发中,接口都是和开发文档相结合的。不论是和前端对接还是三方对接亦或者是接口留档,当我们开发完接口后,都需要去创建对应的接口文档。而修改接口后也要修改相对应的接口文档,但是这个真的很容易疏漏。而且相对于繁重的开发任务而言,维护文档又是一个同样让人心累的事情。
那么有没有能针对我们的接口自动生成接口说明的工具呢,这样我们就不需要特意去生成和实时的去维护api文档?答案当然是-有,这就是今天要介绍的Swagger。

Swagger介绍

Swagger最初是由Tony Tam创建的一个开源项目,旨在提供一种描述RESTful API的标准化语言。随着时间的发展,Swagger逐渐演变成OpenAPI Specification(OAS),这是一个独立于任何特定实现的开放标准,用于描述RESTful Web服务。Swagger UI和Swagger Editor则是基于该规范的两个重要工具,它们分别用于可视化和编辑API文档。通过它们我们就可以实现自动生成和更新文档。

优点

1、标准化的API描述:
Swagger遵循OpenAPI规范,提供了一种标准化的方式来描述API,包括路径、方法、参数、响应等,这使得API文档易于理解且具有一致性。
2、交互式文档:
Swagger UI能够根据OpenAPI规范自动生成一个动态的、可交互的文档界面。开发者和用户可以直接在这个界面上尝试调用API,查看请求和响应示例,极大地提升了API的可用性和可测试性。
3、自动化生成客户端代码:
Swagger Codegen工具可以根据API的定义自动生成多种编程语言的客户端代码和服务器端接口代码,大大节省了开发时间。
4、简化文档维护:
因为API的描述与实际实现紧密相连,当API发生变化时,文档可以自动更新,避免了手动维护文档带来的不一致性和遗漏。
5、促进团队协作:
Swagger提供了一个共同的语言,使得开发人员、产品经理、测试人员和文档编写者能够基于同一套文档进行沟通,提高了团队的协同效率。
6、支持多语言和框架:
Swagger兼容多种后端技术和语言,如Java、Python、Node.js等,几乎可以无缝融入任何现有的技术栈。
7、便于API治理:
Swagger的标准化描述使得API的版本控制、权限管理、流量监控等治理工作变得更加容易和高效。

下面我们就来看一下如何在我们的项目中集成Swagger

添加pom依赖

说明:下面截图给出的非官方版本的UI依赖,至于为什么,博主稍后会给出解释。

在这里插入图片描述

        <!-- swagger的UI可视化界面 git版本-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.8.1</version>
        </dependency>
        
        <!-- swagger的UI可视化界面 官方版本,注意版本号一致-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
        </dependency>


        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>

上面给出了两个不同版本的Swagger UI可视化界面依赖。首先最上面的是博主使用的git版本,下面给出的是官方版本UI界面,二者选择其一即可。二者界面区别下面单独给出。
注意:若选择官方UI界面,需要注意版本号问题,要下面的springfox-swagger2使用同一个版本号,否则会启动异常。

设置Swagger配置类

@Configuration
@EnableSwagger2
@Profile({"dev", "test", "local"}) // 设置swagger的使用环境(防止prod环境api泄露)
public class Swagger2Config {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                 // 对某些api进行监控
//或 .apis(RequestHandlerSelectors.basePackage(“com.springboot.demo”))
                .apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
                .paths(PathSelectors.any()) // 对所有路径进行监控
                .build();
    }
    // 设置swagger的api相关信息
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("local-project-api")
                .description("本地接口api")
                .version("1.0")
                .build();
    }

}

官方UI界面

注意:启动类添加注解:@EnableSwagger2
访问路径:http://{ip}:{port}/swagger-ui.html

主界面

在这里插入图片描述

单个Api如下:

在这里插入图片描述

Git版本UI界面

访问路径:http://{ip}:{port}/doc.html

主界面

在这里插入图片描述

设置全局参数

在这里插入图片描述

单个API如下:

在这里插入图片描述

在这里插入图片描述

总的来说,Git版本的UI界面更和谐,布局也更合理。但也不是说官方版本的UI界面就多不好,仁者见仁智者见智,博主只是根据自己使用得出的个人见解,大家可以根据自己需要自由选择。

到这里就结束了,创作不易,若有问题欢迎指正~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

用数组模拟栈实现递归函数模拟

做算法课设时候看到题目要求模拟函数递归时候栈的入栈出栈过程。本来想着直接调用系统递归函数即可&#xff0c;可是发现系统函数栈的空间非常小大约只有3000层&#xff0c;很容易爆栈。于是便有了用栈去模拟递归函数的想法&#xff0c;但是上网查了下貌似相关代码比较少&#…

cartographer从入门到精通(一):cartographer介绍

一、cartographer重要文档 有关cartographer的资料有2个比较重要的网站&#xff0c;我们的介绍也是基于这两个网站&#xff0c;其中会加入自己的一些理解&#xff0c;后续也有一些对代码的修改&#xff0c;来实现我们想完善的功能。 1-Cartographer 2-Cartographer ROS 第1个…

如何使用飞书快捷指令无感记账,ios版

总结 很多人无法长期坚持记账&#xff0c;主要是每次消费需要打开手机软件&#xff0c;一系列繁琐的操作&#xff0c;导致过程中可能就忘了。 今天给大家带来飞书自动记账。 演示视频 点击查看&#xff1a;https://www.douyin.com/video/7312857946382241063 安装 下载快捷…

【java计算机毕设】网上商城系统java MySQL ssm vue html maven项目设计代码源码+文档PPT

1项目功能 2项目介绍 系统功能&#xff1a; 网上商城系统包括管理员、用户俩种角色。 管理员功能包括个人中心模块用于修改个人信息和密码、管理员管理、基础数据管理、论坛管理、商品管理、浏览记录管理、公告信息管理、用户管理、轮播图信息。 用户功能包括个人中心模块用于…

【Pyspark-驯化】spark中高效保存数据到hive表中:stored as PARQUET

【Pyspark-驯化】spark中高效保存数据到hive表中&#xff1a;stored as PARQUET 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取相关…

python数据分析与可视化一

公共部分 # 引入数据分析工具 Pandas import pandas as pd # 引入数据可视化工具 Matplotlib import matplotlib.pyplot as plt # 引入数据可视化工具 Seaborn (基于matplotlib) import seaborn as sns # 解决输出时的列名对齐问题 pd.set_option(display.unicode.east_…

短视频利器 ffmpeg (2)

ffmpeg 官网这样写到 Converting video and audio has never been so easy. 如何轻松简单的使用&#xff1a; 1、下载 官网&#xff1a;http://www.ffmpeg.org 安装参考文档&#xff1a; https://blog.csdn.net/qq_36765018/article/details/139067654 2、安装 # 启用RPM …

华强盛网络变压器外部电路如何接线

图一是 华强盛 Hqst 网络变压器工厂19926430038 华强盛电子导读&#xff1a; 网络变压器的外部电路接线通常依赖于其设计和用途。一般来说&#xff0c;网络变压器有多个端口&#xff0c;每个端口可能用于不同的连接或功能。以下是一些可能的接线方式&#xff1a; 1. **主电源…

自研网关架构设计

网关项目 1. 了解网关网关横向对比为什么自研网关 2. 架构设计技术栈技术要点异步化设计使用缓存缓冲合理使用串行化吞吐量为王合适的工作线程 架构图 1. 了解网关 概念 访问数据、业务逻辑或功能的 “前门”负责处理接受和处理调用过程中的所有任务 类型 RESTful APl 使用…

核方法总结(三)———核主成分(kernel PCA)学习笔记

一、核主成分 1.1 和PCA的区别 PCA &#xff08;主成分分析&#xff09;对应一个线性高斯模型&#xff08;参考书的第二章&#xff09;&#xff0c;其基本假设是数据由一个符合正态分布的隐变量通过一个线性映射得到&#xff0c;因此可很好描述符合高斯分布的数据。然而在很多实…

深入分析 Android BroadcastReceiver (七)

文章目录 深入分析 Android BroadcastReceiver (七)1. 高级应用场景1.1 示例&#xff1a;动态权限请求1.2 示例&#xff1a;应用内通知更新 2. 安全性与性能优化2.1 示例&#xff1a;设置权限防止广播攻击2.2 示例&#xff1a;使用 LocalBroadcastManager2.3 示例&#xff1a;在…

零成本打造精品宣传册

​随着互联网的发展&#xff0c;企业和个人对宣传册的需求日益增长&#xff0c;然而&#xff0c;高质量的宣传册制作往往需要不菲的成本。那么&#xff0c;如何零成本打造精品宣传册呢&#xff1f; 一、明确定位和目标群体 在制作宣传册之前&#xff0c;首先要明确其定位和目标…

关于怎么将wireshark抓包视频流转为视频播放出来

0.安装wireshark 安装PotPlayer 1.将以下两个插件放入 C:\Program Files\Wireshark\plugins 目录中 2.筛选视频流数据包&#xff0c;右键Decode As… 改为RTP 或者 右键->follow&#xff08;追踪流&#xff09;->UDP stream 然后叉掉弹窗 3.选择菜单Edit->Prefe…

职责链让树状分支更严谨更易读更易维护

业务场景 传统方式就不列举了 职责链解决 Chain 类 class Chain {fn: Function;successor: any;constructor(fn: Function) {this.fn fn;this.successor null;}setNextSuccessor(successor: any) {return (this.successor successor);}passRequest() {var ret this.fn.a…

微信公众号扫码授权登录

【微信扫登录】原理说明 1、准备工作&#xff1a;注册开放微信公众号。获得此账号的AppID和AppSecret。 2、发起授权登录&#xff1a;通过授权链接或者扫码授权二维码的方式&#xff0c;获取登录code&#xff0c;通过code获取access_token。 3、成功获取access_token即代表登…

[CTF]-PWN:mips反汇编工具,ida插件retdec的安装

IDA是没有办法直接按F5来反汇编mips的汇编的&#xff0c;而较为复杂的函数直接看汇编不太现实&#xff0c;所以只能借用插件来反汇编 先配置环境&#xff0c;下载python3.4以上的版本&#xff0c;并将其加入到环境变量中 下载retdec 地址&#xff1a;Release v1.0-ida80 ava…

常见Web认证方式对比

认证是一个在用户或者设备在访问一个受限的系统时&#xff0c;鉴定用户凭据的过程&#xff0c;即确认“你是谁”的问题。最常见的认证用户的方式是通过用户名和密码的形式进行校验&#xff0c;目前存在多种校验方式&#xff0c;本文将对其进行一个简单的对比&#xff0c;使得大…

今天起,全球所有Mac用户可免费安装桌面版ChatGPT

在 macOS 上&#xff0c;用户在安装新的 ChatGPT 应用程序后&#xff0c;使用 Option Space 的键盘组合即可快速调用 ChatGPT。 刚刚&#xff0c;OpenAI 宣布推出适用于 macOS 的应用程序。 虽然 Mac 应用程序尚未在 Mac App Store 中提供&#xff0c;但用户可以直接从 Open…

Lean4Game 开发教程 | 数学形式化

引言 Lean 是一门用于形式化证明的编程语言&#xff0c;它允许严格证明数学定理和验证软件代码的正确性。 本篇介绍 Lean 游戏的编写和发布方式。这类游戏不仅利于对 Lean 本身的学习&#xff0c;对学科知识的理解&#xff0c;还能推动数学圈内人对 Lean 的接触学习。 Lean4…

elementUI搭建使用过程

前言 Element&#xff0c;一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组 件库 安装 ElementUI 在终端命令行输入 npm i element-ui -S 在 main.js 中写入以下内容&#xff1a; import ElementUI from element-ui ; import element-ui/lib/theme-chalk/i…