Swagger3.0接口生成并导入YApi

一、引入依赖

    <!--Swagger-UI API文档生产工具--><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency><!--解决Swagger访问主页时的NumberFormatException问题--><dependency><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId><version>1.6.0</version></dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>1.6.0</version></dependency><!-- 排除低版本的spring-plugin-core--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${boot.version}</version><type>pom</type><scope>import</scope><exclusions><exclusion><groupId>org.springframework.plugin</groupId><artifactId>spring-plugin-core</artifactId></exclusion></exclusions></dependency><!-- 引入高版本的spring-plugin-core--><dependency><groupId>org.springframework.plugin</groupId><artifactId>spring-plugin-core</artifactId><version>2.0.0.RELEASE</version></dependency>

二、代码添加注解

controller类添加注解@Tag(name="分组名xxx", description = "这是描述"),

controller方法添加注解@Operation(tags = "分组名xxx", description = "这是描述")

保证@Operation注解中的tags的值与@Tag注解中的name的值一致,这样导出的接口会自动在yapi中创建分组

代码示例

@Tag(name = "等级接口分组", description = "等级相关接口api")
@RestController
@RequestMapping("/grade")
public class GradeController {@Autowiredprivate IGradeService gradeService;/*** 新增规则* @param requestDTO* @return*/@Operation(tags = "等级接口分组", description = "新增规则")@PostMapping("/rule/create")public WebResult createRule(@RequestBody @Valid RuleGradeCreateRequestDTO requestDTO) {return gradeService.createRule(requestDTO);}
}

入参/出参对象添加注解@Schema(description = "请求入参的描述"))

入参


@Schema(description = "请求入参")
@Data
public class RuleGradeCreateRequestDTO  extends BaseDTO {@Schema(description = "等级设置不能为空", required = true)@NotNull(message = "等级设置不能为空")private List<RuleGradeCreateDetailRequestDTO > detailRequestDTOList;@Schema(description = "等级数量不能为空", required = true)@NotNull(message = "等级数量不能为空")private Integer gradeNum;@Schema@Datapublic static class RuleGradeCreateDetailRequestDTO  {@Schema(description = "等级设置不能为空", required = true)@NotNull(message = "等级设置不能为空")private String gradeName;@Schema(description = "得分率不能为空", required = true)@NotNull(message = "得分率不能为空")@Max(value = 100)@Min(value = 0)private Integer gradeRate;}
}

出参 

@Schema
@Data
public class GradeSearchResponseDTO extends BaseDTO {@Schema(description = "主键id", required = true)private String id;@Schema(description = "等级设置", required = true)private List<GradeSearchDetailResponseDTO> detailResponseDTOList;@Schema(description = "等级数量",required = true)private Integer gradeNum;@Datapublic static class GradeSearchDetailResponseDTO {@Schema(description = "等级名称", required = true)private String gradeName;@Schema(description = "得分率", required = true)private Integer gradeRate;}}

三、添加配置文件

创建一个SwaggerConfig.java文件,用来配置生成哪些接口,这里我指定了生成/grade这个url下的所有接口

注意:SwaggerConfig文件中可以指定生成的api路径范围:可以扫描整个包,也可以针对某一个url进行生成,非常灵活,实际生产过程中开发人员自行指定生成的api范围,方便增量更新api接口

/*** @author huangtc* @description: 这个文件建议不要提交到线上环境,本地使用即可,如果非要通过git协作共享该文件,一定要设置.enable(false);* 这个文件建议不要提交到线上环境,本地使用即可,如果非要通过git协作共享该文件,一定要设置.enable(false);* 这个文件建议不要提交到线上环境,本地使用即可,如果非要通过git协作共享该文件,一定要设置.enable(false);* 这个文件建议不要提交到线上环境,本地使用即可,如果非要通过git协作共享该文件,一定要设置.enable(false);*/
@Configuration
@EnableOpenApi
public class SwaggerConfig {/*** 创建API*/@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.OAS_30)// 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息).apiInfo(apiInfo())// 设置哪些接口暴露给Swagger展示.select()// 扫描所有有注解的api,用这种方式更灵活// .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))// 扫描所有//.apis(RequestHandlerSelectors.any())// 指定扫描某个包//.apis(RequestHandlerSelectors.basePackage("com.huangtc.xxx.controller.GradeController"))// 扫描所有路径//.paths(PathSelectors.any())// 导出指定的url.paths(PathSelectors.ant("/huangtc/grade/**")).build()// 生产环境禁用,本地环境需要导出api的时候再设置.enable(true)// 这个文件建议不要提交到线上环境,本地使用即可// 如果非要通过git协作共享该文件,一定要设置.enable(false);.enable(true);}/*** 添加摘要信息*/private ApiInfo apiInfo() {// 用ApiInfoBuilder进行定制return new ApiInfoBuilder()// 设置标题.title("xxx系统_接口文档").description("xxx系统_接口文档描述").version("1.0").build();}
}

四、导出接口

​ui可视化访问地址:http://localhost:9060/项目请求路径/swagger-ui/index.html
api-docs访问地址:http://localhost:9060/项目请求路径/v3/api-docs

访问api-docs地址,将浏览器上的接口文本另存为txt文件,例如grade_api.txt,方便后续导入到YApi。

五、导入到YApi

打开yapi网页,依次点击 数据管理->数据导入选择Swagger->公共分类->数据同步按需选择->点击文件上传,选择刚刚创建的api.txt->点击确认

当然如果api-docs访问地址支持公网访问,则也可以点击“开启url导入”。

六、Swagger自动同步

首先确保api-docs访问地址支持公网访问,然后依次点击 设置->Swagger自动同步->选择如图所示

七、Swagger3.0对比Swagger2.0的注解变化

  1. @ApiImplicitParam:在 Swagger 2.0 中用于描述单个请求参数详细信息,Swagger 3.0 中已经启用了 @Parameter 来取代 @ApiImplicitParam。

  2. @ApiImplicitParams:在 Swagger 2.0 中被用来描述多个请求参数详细信息,Swagger 3.0 中已经不再使用。

  3. @ApiModel:在 Swagger 2.0 中是用于描述数据模型的元素,Swagger 3.0 中已经废弃了,取而代之的是 @Schema。

  4. @ApiModelPropery:在 Swagger 2.0 中是用于描述模型属性信息的注解,Swagger 3.0 中已经废弃了,取而代之的是@Schema。

  5. @ApiError:在 Swagger 2.0 中用于描述错误响应信息,Swagger 3.0 中已经废弃了,取而代之的是 @ApiResponse。

  6. @ApiIgnore:在 Swagger 2.0 中用于忽略某个 API 接口,Swagger 3.0 中已经废弃了,取而代之的是 @Operation(hidden=true)。

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

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

相关文章

PHP实现企业微信素材上传与获取的完整指南与踩坑日记

企业微信作为一款专门为企业打造的即时通讯工具&#xff0c;提供了丰富的功能和接口&#xff0c;其中包括素材管理。素材管理在企业内部的沟通、分享和展示中起着重要的作用。本篇文章将介绍如何使用PHP语言对接企业微信素材上传和获取的功能。 ## 1. 准备工作 首先&#xff0…

课设--学生成绩管理系统(三)

欢迎来到 Papicatch的博客 文章目录 &#x1f349;报告目的 &#x1f349;总体设计 &#x1f348; 模块处理逻辑 &#x1f349;数据库设计 &#x1f348;总览表 &#x1f348;表设计 &#x1f34d;管理员信息表 &#x1f34d;课程基本信息表 &#x1f34d;课程扩展信息…

19.Docker跨宿主机容器之间的通信macvlan

Docker跨宿主机容器之间的通信macvlan&#xff0c;类似桥接网络模式 macvlan通信类型&#xff0c;设置IP地址只能手动指定&#xff08;–ip&#xff09;一台一台设置IP地址 默认一个物理网卡&#xff0c;只有一个物理mac地址&#xff0c;虚拟多个mac地址&#xff08;让人感觉是…

Vue62-配置代理-方式一

一、业务场景 有两个服务器&#xff1a; 二、可用的ajax请求 推荐使用&#xff1a;axios。 三、axios发送请求 报错原因&#xff1a;跨域&#xff0c;违背了同源策略&#xff1a;协议名&#xff0c;主机名&#xff0c;端口号&#xff01; 四、同源策略 4-1、跨域请求问题…

python5 正则表达式

Python中的正则表达式是一种强大的工具&#xff0c;用于在文本中搜索、匹配和处理特定模式的字符串。它们通过定义一种模式&#xff0c;使得可以轻松地搜索、替换、提取和验证文本数据&#xff0c;在Python中的正则表达式由re模块提供支持的。 正则表达式通常用于以下任务&…

UE4_材质_雨滴涟漪效果ripple effect_ben教程

学习笔记&#xff0c;不喜勿喷&#xff01;侵权立删&#xff0c;祝愿生活越来越好&#xff01; 雨水落下时会产生这些非常漂亮的同心环波纹&#xff0c;我们要做的第一件事是创建一个单个的圆环遮罩动画&#xff0c;我们希望环在开始的时候在中心很小&#xff0c;然后放大&…

音频基础知识和音频指标

音频基础知识 声音 声音&#xff08;sound)是由物体振动产生的声波。物体在一秒钟之内振动的次数叫做频率&#xff0c;单位是赫兹&#xff0c;字母Hz。人耳可以识别的声音频率在 20 Hz~20000 Hz之间&#xff1b; 声音三要素&#xff1a; 响度 响度&#xff0c;…

kaggle notebook和jupyter notebook读取csv

kaggle本地比赛用打开notebook的示例代码可以获取当前比赛的文件数据路径&#xff0c;进而后续直接复制读取 jupyter notebook读取csv 直接下载数据集到电脑上&#xff0c;并用本地路径读取就行。

无线备网,保障连锁零售数字化运营

为了提升运营效率、改进客户体验&#xff0c;零售商们不断引入新的数字化工具和平台&#xff0c;包括数字化收银、客流统计、客户关系管理系统等。现代化智慧零售的运营更加依赖于稳定、高效的网络连接&#xff0c;数字化网络不仅是提升运营效率和客户体验的关键&#xff0c;还…

HTML+CSS+PHP实现网页留言板功能(需要创建数据库)

话说前头&#xff0c;我这方面很菜滴。这是我网页作业的一部分。 1.body部分效果展示&#xff08;不包括footer&#xff09; 2、代码 2.1 leaving.php&#xff08;看到的网页&#xff09; <!DOCTYPE html> <html lang"en"> <head> <met…

分数限制下,选好专业还是选好学校

目录 1.概述 1.1.综合考虑 1.2.个人经验分享 2.专业解析 2.1. 计算机科学与技术 2.2. 英语 2.3. 法学 2.4.专业VS学校 2.5.建议 3.名校效应分析 3.1. 名校声誉&#xff08;品牌效应&#xff09; 3.2. 资源获取 3.3. 学术氛围 3.4. 就业优势 3.5.小结 4.好专业和…

【启明智显产品分享】Model4 工业级HMI芯片详解(三):高安全、防抄板

Model4 工业级HMI芯片详解系列专题&#xff08;三&#xff09;【高安全、防抄板】 随着物联网和智能设备的快速发展&#xff0c;设备安全认证的需求日益迫切。硬件安全认证和保护在确保设备和身份安全中发挥着不可替代的作用&#xff0c;需要与软件安全相结合&#xff0c;共同构…

vue修改node_modules打补丁步骤和注意事项_node_modules 打补丁

1、vue-pdf问题解决及patch-package简介&#xff1a;https://www.jianshu.com/p/d1887e02f8d6 2、使用“黑魔法”优雅的修改第三方依赖包&#xff1a;https://zhuanlan.zhihu.com/p/412753695 3、使用patch-package定制node_modules中的依赖包&#xff1a;https://blog.csdn.…

git使用摘樱桃的方式,实现特定需求进行提交合并

文章目录 先checkOut到主要的分支(需求提交到这) 然后双击点别的需求分支,对提交内容选定 进行摘樱桃操作 然后双击回到主要分支,会发现那2个提交内容代码已经在主要分支的本地里,选中其 右键选择Squash Commits进行合并 标注自己的需求标题提交名更改后, 最后进行push推送到…

defer+recover机制处理错误

问题&#xff1a;多个协程工作&#xff0c;其中一个协程出现panic&#xff0c;导致程序崩溃 解决办法&#xff1a;利用deferrecover捕获panic进行处理&#xff0c;即使协程出现错误&#xff0c;主线程仍然不受影响可以继续执行 package mainimport ("fmt""tim…

洛谷——P2824 排序

题目来源&#xff1a;[HEOI2016/TJOI2016] 排序 - 洛谷https://www.luogu.com.cn/problem/P2824 问题思路 本文介绍一种二分答案的做法&#xff0c;时间复杂度为&#xff1a;(nm)*log(n)*log(n).本题存在nlog(n)的做法&#xff0c;然而其做法没有二分答案的做法通俗易懂. 默认读…

gitlab升级16.11.3-ee

背景 这是事后一段时间补充记录的博客。 升级目的&#xff1a;修补漏洞CVE-2024-4835 未经认证的威胁攻击者能够利用该漏洞在跨站脚本 (XSS) 攻击中&#xff0c;轻松接管受害者账户。 gitlab版本为14.6.2-ee升级至16.11.3-ee 思路 翻阅文档找升级方法及升级版本路径。使用…

AI智能盒子助力打造垃圾发电AI应用标杆!

垃圾焚烧发电作为一种新型的垃圾处理方式&#xff0c;能将其转化为电能&#xff0c;实现资源的再利用&#xff0c;成为实现节能环保的重要方式之一。为有效落实环境、安全、健康及社会责任管理体系&#xff0c;知名垃圾发电投资运营商光大环保能源致力于广泛利用科技&#xff0…

生成高保真度3D数字人化身:打造你的专属虚拟形象

在数字化时代,我们的虚拟形象正变得越来越重要。现在,一项前沿技术正将这一领域推向新的高度——生成高保真度的3D数字人化身。这项技术不仅可以将你的形象以3D形式呈现,更能赋予它生命,让你的虚拟形象拥有丰富的表情和动作。 一、技术简介 这项技术就像是一个高级的3D照…

信息系统项目管理师 | 信息系统安全技术

关注WX&#xff1a;CodingTechWork 信息安全概念 安全属性 秘密性&#xff1a;信息不被未授权者知晓。完整性&#xff1a;信息是正确的、真实的、未被篡改的、完整无缺。可用性&#xff1a;信息可以随时正常使用。 安全分层 设备安全 设备的稳定性&#xff1a;在一定时间…