SpringBoot教程(十七) | SpringBoot集成swagger

SpringBoot教程(十七) | SpringBoot集成swagger

  • 一、Swagger的简述
  • 二、SpringBoot集成swagger2
    • 1. 引入依赖
    • 2. 新建SwaggerConfig配置类
      • 当 SpringBoot为2.6.x及以上时 需要注意
    • 3.配置Swagger开关
    • 4. 给Controller 添加注解(正式使用)
    • 5. SpringSecurity中配置 (看需求使用)
  • 三、SpringBoot集成swagger3

一、Swagger的简述

Swagger(现在更广泛地被称为OpenAPI)是一套基于OpenAPI规范构建的开源工具,它主要用于生成、描述、调用和可视化RESTful风格的Web服务。
其中最重要的表现在于实时接口文档,可以更好的让前端进行联调

二、SpringBoot集成swagger2

1. 引入依赖

首先,你需要在项目的pom.xml文件中添加Swagger2的依赖。

<dependencies>  <!-- Swagger2 -->  <dependency>  <groupId>io.springfox</groupId>  <artifactId>springfox-swagger2</artifactId>  <!-- 注意:这里使用的是2.9.2版本 用的人比较多 -->  <version>2.9.2</version> </dependency>  <dependency>  <groupId>io.springfox</groupId>  <artifactId>springfox-swagger-ui</artifactId>  <!-- 与swagger2版本保持一致 -->  <version>2.9.2</version> </dependency>  
</dependencies>

2. 新建SwaggerConfig配置类

@EnableSwagger2

@Configuration  
@EnableSwagger2  
public class SwaggerConfig {  @Bean  public Docket docket() {  return new Docket(DocumentationType.SWAGGER_2)  .select()  //通过包路径来指定哪些Controller中的API需要被Swagger扫描并生成文档。//这里指定了"com.yourcompany.yourproject.controller"包及其子包中的所有Controller。.apis(RequestHandlerSelectors.basePackage("com.yourcompany.yourproject.controller"))  //扫描所有路径  .paths(PathSelectors.any()) .build()  //设置API的元数据信息,如标题、描述、版本等。//这些信息会显示在Swagger UI的顶部。   .apiInfo(apiInfo());}  private ApiInfo apiInfo() {  return new ApiInfoBuilder()  .title("你的项目名称")  .description("项目的API描述")  .version("1.0")  .build();  }  
}

如果你只想包含特定路径的API,可以使用其他PathSelectors方法,
如antPath(“/user/**”)来匹配所有以"/user/"开头的路径。

可以把 .paths(PathSelectors.any())  换成 .paths(PathSelectors.antPath("/user/**"))

当 SpringBoot为2.6.x及以上时 需要注意

由于SpringBoot 2.6.x及以上版本使用了新的路径匹配策略(PathPatternMatcher),
而Swagger(尤其是Springfox-swagger2)通常使用的是AntPathMatcher,
这可能会导致两者之间的不兼容问题。

在application.properties或application.yml文件中,
可以将SpringBoot的默认路径匹配策略更改为AntPathMatcher,以解决与Swagger的兼容性问题。
配置示例如下:

properties写法如下

spring.mvc.pathmatch.matching-strategy=ant_path_matcher

或者在application.yml中:

spring:  mvc:  pathmatch:  matching-strategy: ant_path_matcher

3.配置Swagger开关

可以在application.properties或application.yml文件中定义不同的环境配置,
然后在Swagger配置类中根据当前激活的Profile来决定是否启用Swagger。

application.yml示例

spring:  profiles: #指定激活 active: dev  --- 
#测试环境 
spring:  config:  activate:  on-profile: dev  
swagger:  enabled: true  ---  
#开发环境
spring:  config:  activate:  on-profile: prod  
swagger:  enabled: false
@Configuration  
@EnableSwagger2  
public class SwaggerConfig {  // 使用@Value注解读取配置文件中的swagger.enabled值  @Value("${swagger.enabled:false}")  private Boolean swaggerShow;  @Bean  public Docket docket() {  return new Docket(DocumentationType.SWAGGER_2)  .enable(swaggerShow).select()  // 通过包路径来指定哪些Controller中的API需要被Swagger扫描并生成文档  .apis(RequestHandlerSelectors.basePackage("com.yourcompany.yourproject.controller"))  // 扫描所有路径  .paths(PathSelectors.any())  .build()  // 设置API的元数据信息  .apiInfo(apiInfo());   }  private ApiInfo apiInfo() {  return new ApiInfoBuilder()  .title("你的项目名称")  .description("项目的API描述")  .version("1.0")  .build();  }  
}

4. 给Controller 添加注解(正式使用)

import com.mcy.springbootswagger.User.User;
import com.mcy.springbootswagger.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/user")
//说明接口文件
@Api(value = "测试接口", tags = "用户管理相关的接口", description = "用户测试接口")
public class UserController {@Autowiredprivate UserService userService;/*** 保存数据* @param user* @return*/@PostMapping(value = "/save")//方法参数说明,name参数名;value参数说明,备注;dataType参数类型;required 是否必传;defaultValue 默认值@ApiImplicitParam(name = "user", value = "新增用户数据")//说明是什么方法(可以理解为方法注释)@ApiOperation(value = "添加用户", notes = "添加用户")public String saveUser(User user){userService.save(user);return "保存成功";}/*** 根据id查询用户* @param id* @return*/@GetMapping(value = "findById")@ApiOperation(value = "根据id获取用户信息", notes = "根据id查询用户信息")public User getUser(Integer id){return userService.findById(id);}@DeleteMapping(value = "deleteById")@ApiOperation(value = "根据id删除数据", notes = "删除用户")public String delete(Integer id){userService.deleteById(id);return "删除成功";}
}

运行项目,输入http://localhost:8080/swagger-ui.html访问Swagger页面,页面如下:

由于我们只给用户接口添加了注解,所有用户接口是可以直接观察中文文档的。

在这里插入图片描述
在这里插入图片描述

  • 点击需要测试的接口方法后,
    可以看到接口需要的参数,请求地址及接口说明信息。
    点击右上角的Try it out即可对接口进行测试。
    在这里插入图片描述
    在这里插入图片描述
  • 查询结果:
    在这里插入图片描述
    这里这些了部分接口进行测试,可以根据项目需求自行添加其他接口。

5. SpringSecurity中配置 (看需求使用)

如果Spring Boot项目中集成了Spring Security,接口会被拦截,需要在Spring Security的配置类中重写configure方法,对接口进行过滤一下。代码如下:

@Override
public void configure(WebSecurity web) throws Exception {web.ignoring().antMatchers("/swagger-ui.html").antMatchers("/v2/**").antMatchers("/swagger-resources/**");
}

三、SpringBoot集成swagger3

参考文章
【1】SpringBoot之整合Swagger2(完整版)
【2】SpringBoot整合Swagger2(完整版)
【3】SpringBoot教程(十六) | SpringBoot集成swagger(全网最全)
【4】springboot 2.7版本整合swagger2代码实现
【5】【Swagger】maven项目整合Swagger(含Springfox3.0与spring boot 2.6.0及以上版本冲突解决办法)
【6】一篇搞定SpringBoot任意版本集成Swagger各种版本

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

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

相关文章

PCIe 以太网芯片 RTL8125B 的 spec 和 Linux driver 分析备忘

1,下载 RTL8125B driver 下载页&#xff1a; https://www.realtek.com/Download/List?cate_id584 2,RTL8125B datasheet下载 下载页&#xff1a; https://file.elecfans.com/web2/M00/44/D8/poYBAGKHVriAHnfWADAT6T6hjVk715.pdf3, 编译driver 解压&#xff1a; $ tar xj…

鸿蒙OpenHarmony Native API【drawing_color.h与drawing_font_collection.h】 头文件

drawing_color.h Overview Related Modules: [Drawing] Description: 文件中定义了与颜色相关的功能函数 Since: 8 Version: 1.0 Summary Functions FunctionDescription[OH_Drawing_ColorSetArgb] (uint32_t alpha, uint32_t red, uint32_t green, uint32_t blue)u…

机器学习第四十九周周报 GT

文章目录 week49 GY摘要Abstract1. 题目2. Abstract3. 网络结构3.1 graphon3.2 框架概览 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程4.3.1 有效性4.3.2 可转移性4.3.3 消融研究4.3.4 运行时间 5. 结论6.代码复现小结参考文献 week49 GY 摘要 本周阅读了题为Fine-tun…

几个小创新模型,Transformer与SVM、LSTM、BiLSTM、Adaboost的结合,MATLAB分类全家桶再更新!...

截止到本期MATLAB机器学习分类全家桶&#xff0c;一共发了5篇&#xff0c;参考文章如下&#xff1a; 1.机器学习分类全家桶&#xff0c;模式识别&#xff0c;故障诊断的看这一篇绝对够了&#xff01;MATLAB代码 2. 再更新&#xff0c;机器学习分类全家桶&#xff0c;模式识别&a…

【四】jdk8基于m2芯片arm架构Ubuntu24虚拟机下载与安装

文章目录 1. 安装版本2. 开始安装3. 集群安装 1. 安装版本 如无特别说明&#xff0c;本文均在root权限下安装。进入oracle官网&#xff1a;https://www.oracle.com/java/technologies/downloads/找到最下面Java SE 看到java 8&#xff0c;下载使用 ARM64 Compressed Archive版…

vue3+vite纯前端实现自动触发浏览器刷新更新版本内容,并在打包时生成版本号文件

前言 在前端项目中&#xff0c;有时候为了实现自动触发浏览器刷新并更新版本内容&#xff0c;可以采取一系列巧妙的措施。我的项目中是需要在打包时候生成一个version.js文件&#xff0c;用当前打包时间作为版本的唯一标识&#xff0c;然后打包发版 &#xff0c;从实现对版本更…

五大设备制造商的 200 多种机型的安全启动功能完全失效

2012 年&#xff0c;一个由硬件和软件制造商组成的行业联盟采用了安全启动技术&#xff0c;以防范长期存在的安全威胁。这种威胁是恶意软件的幽灵&#xff0c;它可以感染 BIOS&#xff0c;即每次计算机启动时加载操作系统的固件。从那里&#xff0c;它可以保持不受检测和删除&a…

从零开始学Java(超详细韩顺平老师笔记梳理)08——面向对象编程中级(上)IDEA常用快捷键、包、封装、继承

文章目录 前言一、IDEA使用常用快捷键模板/自定义模板 二、包package1. 基本介绍2. 包的命名规范3. 常用的包和如何引入4. 注意事项和细节 三、访问修饰符&#xff08;四类&#xff09;四、封装Encapsulation&#xff08;重点&#xff09;1. 封装介绍2. 封装步骤3. 快速入门4. …

SpringCloud Nacos的配置与使用

Spring Cloud Nacos的配置与使用 文章目录 Spring Cloud Nacos的配置与使用1. 简单介绍2. 环境搭建3. 服务注册/服务发现4. Nacos 负载均衡4.1 服务下线4.2 权重配置4.3 同集群优先访问 5. Nacos 健康检查5.1 两种健康检查机制5.2 服务实例类型 6.Nacos 环境隔离6.1 创建namesp…

【MySQL进阶之路 | 高级篇】表级锁之S锁,X锁,意向锁

1. 从数据操作的粒度划分&#xff1a;表级锁&#xff0c;页级锁&#xff0c;行锁 为了尽可能提高数据库的并发度&#xff0c;每次锁定的数据范围越小越好&#xff0c;理论上每次只锁定当前操作的数据的方案会得到最大的并发度&#xff0c;但是管理锁是很耗资源的事情&#xff…

驾驭代码的无形疆界:动态内存管理揭秘

目录 1.:为什么要有动态内存分配 2.malloc和free 2.1:malloc 2.2:free 3.calloc和realloc 3.1:calloc 3.1.1:代码1(malloc) 3.1.2:代码2(calloc) 3.2:realloc 3.2.1:原地扩容 3.2.2:异地扩容 3.2.3:代码1(原地扩容) 3.2.3:代码2(异地扩容) 4:常见的动态内存的错误…

vite + xlsx + xlsx-style 导出 Excel

如下 npm i 依赖 npm i xlsxnpm i xlsx-style-vite1、简单的使用&#xff1a;.vue文件中使用 const dataSource ref([]) // 数据源const columns [{title: 用户名,key: userName,width: 120,},{title: 用户组,key: userGroup,width: 120,},{title: 状态,key: enable,width: …

鸿蒙(HarmonyOS)下拉选择控件

一、操作环境 操作系统: Windows 11 专业版、IDE:DevEco Studio 3.1.1 Release、SDK:HarmonyOS 3.1.0&#xff08;API 9&#xff09; 二、效果图 三、代码 SelectPVComponent.ets Component export default struct SelectPVComponent {Link selection: SelectOption[]priva…

浅谈我对RESTful架构的理解

总结说在前面&#xff1a; RESTful API是目前比较成熟的一套互联网应用程序的 API 设计理论&#xff0c;他是一种理论规范&#xff0c;方便不同的前端设备与后端进行通信&#xff0c;在 RESTful 风格的 API 设计架构中&#xff0c;每个网址代表一种资源&#xff08;resource&am…

maven介绍 搭建Nexus3(maven私服搭建)

Maven是一个强大的项目管理工具&#xff0c;它基于项目对象模型&#xff08;POM&#xff1a;Project Object Model&#xff09;的概念&#xff0c;通过XML格式的配置文件&#xff08;pom.xml&#xff09;来管理项目的构建 Maven确实可以被视为一种工程管理工具或项目自动化构…

飞凌嵌入式技术创新日深圳站,8月26日见!

飞凌嵌入式技术创新日&#xff08;深圳站&#xff09;将于8月26日举行&#xff0c;一场嵌入式前沿科技的高端局就在眼前。届时&#xff0c;将有多位重量级技术大咖出席&#xff0c;为大家分享最新的研究成果、独到的行业见解和典型的应用案例&#xff0c;紧密结合当前行业热点和…

网络服务综合项目(一键部署shell脚本)

目录 需求&#xff1a; 主机环境描述 注意&#xff1a; 项目需求&#xff1a; 代码讲解 配置本地仓库 安装软件包 配置防火墙 配置策略中的一个布尔值 配置web服务 配置网络仓库 配置DNS服务 配置NTP服务 配置MySQL服务 配置NFS服务 配置论坛服务 进入网站配置…

Python数据分析案例55——基于LSTM结构自编码器的多变量时间序列异常值监测

案例背景 时间序列的异常值检测是方兴未艾的话题。比如很多单变量的&#xff0c;一条风速&#xff0c;一条用电量这种做时间序列异常值检测&#xff0c;想查看一下哪个时间点的用电量异常。 多变量时间序列由不同变量随时间变化的序列组成&#xff0c;这些时间序列在实际应用…

小黄人欢乐来袭,国漫萌物大集结

最近上映的《神偷奶爸》4不知道大家有没有去看&#xff0c;小黄人作为该系列电影的标志性角色&#xff0c;继续以其呆萌可爱的形象和幽默搞怪的性格赢得了观众的喜爱。 在中国动漫中&#xff0c;也有许多可爱且深受观众喜爱的萌物角色。这些角色以其独特的形象、有趣的性格和与…

数据结构day6

一、思维导图 二、模拟面试 typedef定义函数指针的方式typedef int(*p)(int,int);对void*指针的理解&#xff0c;相关应用万能指针&#xff0c;可以定义形参用来接收任意类型的指针变量&#xff0c;也可以定义函数用来返回任意类型的指针变量例如malloc函数在堆区申请内存&…