Swagger转换成Excel文件

1、添加swagger解析依赖包:

        <dependency><groupId>io.swagger.parser.v3</groupId><artifactId>swagger-parser</artifactId><version>2.1.12</version></dependency>

2、示例代码:

package com.rlcloud.risk.util;import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.models.*;
import io.swagger.models.parameters.Parameter;
import io.swagger.models.properties.Property;
import io.swagger.parser.SwaggerParser;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.util.List;
import java.util.Map;/*** @Description : Swagger转换成Excel文件* @date 2024/3/28 17:30* @return* @auther xushuanglu*/
public class SwaggerToExcel {public static void main(String[] args) throws Exception {// 1、获取Swagger文档Swagger swagger = new SwaggerParser().read("http://your-swagger-url/v2/api-docs");// 创建Excel工作簿Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("Swagger API Documentation");// 创建标题行Row titleRow = sheet.createRow(0);Cell titleCell1 = titleRow.createCell(0);titleCell1.setCellValue("Path");Cell titleCell2 = titleRow.createCell(1);titleCell2.setCellValue("Description");// ... 添加其他需要的列标题Cell titleCell3 = titleRow.createCell(2);titleCell3.setCellValue("dataType");Cell titleCell4 = titleRow.createCell(3);titleCell4.setCellValue("接口名称");Cell titleCell5 = titleRow.createCell(4);titleCell5.setCellValue("code");int rowNum = 1;String oldNum = "001";// 遍历每个路径for (String path : swagger.getPaths().keySet()) {// 遍历每个操作for (Map.Entry<HttpMethod, Operation> entry : swagger.getPaths().get(path).getOperationMap().entrySet()) {Row row = sheet.createRow(rowNum);Cell cell1 = row.createCell(0);cell1.setCellValue(path);Cell cell2 = row.createCell(1);cell2.setCellValue(entry.getValue().getSummary());// ... 填充其他需要的信息Cell cell3 = row.createCell(2);//获取请求参数List<Parameter> parameters = entry.getValue().getParameters();parameters.stream().forEach(param -> {//请求参数System.out.println("----------------------请求参数开始---------------------------");//请求参数String name = param.getName();String in = param.getIn();//判断请求参数方式if("body".equals(in)){System.out.println(name + "  : 请求参数是body------------------------------");String capitalized = StrUtil.capitalizeFirstLetter(name); // 首字母大写System.out.println("首字母大写转换:  " + capitalized);String replaceStr = capitalized.replace("Entity", "");System.out.println("去掉Entity字符转换:  " + replaceStr);//获取实体列表Map<String, Model> definitions = swagger.getDefinitions();for (String key : definitions.keySet()) {Model value = definitions.get(key);//判断实体名称是否匹配如果匹配,打印字段信息if(replaceStr.equals(value.getTitle())){// 处理key和valueSystem.out.println("----------------------开始---------------------------");System.out.println("实体:   " + value.getTitle());Map<String, Property> properties = value.getProperties();//遍历实体字段properties.forEach((key1, value1) -> {// 字段值和字段描述:例如:projectName: 项目名称System.out.println("字段:" + key1 + ":" + "  字段描述:  " + value1.getDescription());});System.out.println("----------------------结束---------------------------");// 创建ObjectMapper实例ObjectMapper mapper = new ObjectMapper();// 将Map转换为JSON字符串String jsonString = null;try {jsonString = mapper.writeValueAsString(properties);} catch (JsonProcessingException e) {e.printStackTrace();}// 打印JSON字符串System.out.println(jsonString);cell3.setCellValue(jsonString);}}}String description = param.getDescription();boolean required = param.getRequired();System.out.println("name: " + name + "   in: " + in + " || required: " + required + " || description: " + description);System.out.println("----------------------请求参数结束---------------------------");});Cell cell4 = row.createCell(3);cell4.setCellValue(entry.getValue().getTags().get(0) + "-" + entry.getValue().getSummary());Cell cell5 = row.createCell(4);cell5.setCellValue(oldNum = String.format("RMS" + "%03d",rowNum));rowNum++;}}// 导出Excel文件try (FileOutputStream outputStream = new FileOutputStream("swagger_system.xlsx")) {workbook.write(outputStream);}}}

3、打印信息样例

----------------------请求参数开始---------------------------
collectionTaskCommitRecordEntity  : 请求参数是body------------------------------
首字母大写转换:  CollectionTaskCommitRecordEntity
去掉Entity字符转换:  CollectionTaskCommitRecord
----------------------开始---------------------------
实体:   CollectionTaskCommitRecord
字段:collectContent:  字段描述:   采集内容
字段:collectEndTime:  字段描述:   采集结束时间
字段:collectStartTime:  字段描述:   采集开始时间
字段:collectionTaskId:  字段描述:   信息采集任务id
字段:createBy:  字段描述:  null
字段:createTime:  字段描述:  null
字段:dataRetrieval:  字段描述:   资料调阅
字段:id:  字段描述:  null
字段:informationCollectionId:  字段描述:   信息采集id
字段:isArchived:  字段描述:  null
字段:projectName:  字段描述:   项目名称
字段:relatedMaterials:  字段描述:   相关材料
字段:relatedMaterialsUrl:  字段描述:   相关材料url
字段:remark:  字段描述:   备注
字段:status:  字段描述:   状态
字段:type:  字段描述:   提交类型 1:提交 2:追加提交
字段:updateBy:  字段描述:  null
字段:updateTime:  字段描述:  null
----------------------结束---------------------------
{"collectContent":{"type":"string","format":null,"example":null,"xml":null,"position":null,"description":" 采集内容","title":null,"readOnly":null,"allowEmptyValue":null,"minLength":null,"maxLength":null,"pattern":null,"default":null,"enum":null},"collectEndTime":{"type":"string","format":"date-time","example":null,"xml":null,"position":null,"description":" 采集结束时间","title":null,"readOnly":null,"allowEmptyValue":null,"enum":null},"collectStartTime":{"type":"string","format":"date-time","example":null,"xml":null,"position":null,"description":" 采集开始时间","title":null,"readOnly":null,"allowEmptyValue":null,"enum":null},"collectionTaskId":{"type":"integer","format":"int64","example":null,"xml":null,"position":null,"description":" 信息采集任务id","title":null,"readOnly":null,"allowEmptyValue":null,"minimum":null,"maximum":null,"multipleOf":null,"exclusiveMinimum":null,"exclusiveMaximum":null,"default":null,"enum":null},"createBy":{"type":"string","format":null,"example":null,"xml":null,"position":null,"description":null,"title":null,"readOnly":null,"allowEmptyValue":null,"minLength":null,"maxLength":null,"pattern":null,"default":null,"enum":null},"createTime":{"type":"string","format":"date-time","example":null,"xml":null,"position":null,"description":null,"title":null,"readOnly":null,"allowEmptyValue":null,"enum":null},"dataRetrieval":{"type":"string","format":null,"example":null,"xml":null,"position":null,"description":" 资料调阅","title":null,"readOnly":null,"allowEmptyValue":null,"minLength":null,"maxLength":null,"pattern":null,"default":null,"enum":null},"id":{"type":"integer","format":"int64","example":null,"xml":null,"position":null,"description":null,"title":null,"readOnly":null,"allowEmptyValue":null,"minimum":null,"maximum":null,"multipleOf":null,"exclusiveMinimum":null,"exclusiveMaximum":null,"default":null,"enum":null},"informationCollectionId":{"type":"integer","format":"int64","example":null,"xml":null,"position":null,"description":" 信息采集id","title":null,"readOnly":null,"allowEmptyValue":null,"minimum":null,"maximum":null,"multipleOf":null,"exclusiveMinimum":null,"exclusiveMaximum":null,"default":null,"enum":null},"isArchived":{"type":"string","format":null,"example":null,"xml":null,"position":null,"description":null,"title":null,"readOnly":null,"allowEmptyValue":null,"minLength":null,"maxLength":null,"pattern":null,"default":null,"enum":null},"projectName":{"type":"string","format":null,"example":null,"xml":null,"position":null,"description":" 项目名称","title":null,"readOnly":null,"allowEmptyValue":null,"minLength":null,"maxLength":null,"pattern":null,"default":null,"enum":null},"relatedMaterials":{"type":"string","format":null,"example":null,"xml":null,"position":null,"description":" 相关材料","title":null,"readOnly":null,"allowEmptyValue":null,"minLength":null,"maxLength":null,"pattern":null,"default":null,"enum":null},"relatedMaterialsUrl":{"type":"string","format":null,"example":null,"xml":null,"position":null,"description":" 相关材料url","title":null,"readOnly":null,"allowEmptyValue":null,"minLength":null,"maxLength":null,"pattern":null,"default":null,"enum":null},"remark":{"type":"string","format":null,"example":null,"xml":null,"position":null,"description":" 备注","title":null,"readOnly":null,"allowEmptyValue":null,"minLength":null,"maxLength":null,"pattern":null,"default":null,"enum":null},"status":{"type":"string","format":null,"example":null,"xml":null,"position":null,"description":" 状态","title":null,"readOnly":null,"allowEmptyValue":null,"minLength":null,"maxLength":null,"pattern":null,"default":null,"enum":null},"type":{"type":"integer","format":"int32","example":null,"xml":null,"position":null,"description":" 提交类型 1:提交 2:追加提交","title":null,"readOnly":null,"allowEmptyValue":null,"minimum":null,"maximum":null,"multipleOf":null,"exclusiveMinimum":null,"exclusiveMaximum":null,"default":null,"enum":null},"updateBy":{"type":"string","format":null,"example":null,"xml":null,"position":null,"description":null,"title":null,"readOnly":null,"allowEmptyValue":null,"minLength":null,"maxLength":null,"pattern":null,"default":null,"enum":null},"updateTime":{"type":"string","format":"date-time","example":null,"xml":null,"position":null,"description":null,"title":null,"readOnly":null,"allowEmptyValue":null,"enum":null}}
name: collectionTaskCommitRecordEntity   in: body || required: true || description: collectionTaskCommitRecordEntity
----------------------请求参数结束---------------------------

4、导出Excel样例
在这里插入图片描述

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

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

相关文章

华为校招机试 - 相似图片分类(20240410)

题目描述 小明想要处理一批图片&#xff0c;将相似的图片分类。 他首先对图片的特征采样&#xff0c;得到图片之间的相似度&#xff0c;然后按照以下规则判断图片是否可以归为一类&#xff1a; 相似度 > 0 表示两张图片相似如果 A 和 B 相似&#xff0c;B 和 C 相似&…

基于spring boot的大学生体质测试管理系统

基于spring boot的大学生体质测试管理系统设计与实现 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 …

nginx将一个路径下的多种url分别映射

背景 nginx如何将/static/下的images或script或css路径&#xff0c;分别映射到/data下的images、scripts或styles。 分析 可以在nginx的配置文件中添加以下配置&#xff0c;来实现url以/static/开头时&#xff0c;根据不同的子路径映射到不同的本地文件路径&#xff1a; loc…

Android app如何禁止运行在模拟器中

禁止 Android 应用程序在模拟器上运行涉及到在运行时检测应用是否在模拟器上运行&#xff0c;并根据情况做出相应的处理。以下是一种方法&#xff0c;通过判断设备的某些特征来检测模拟器&#xff1a; 创建一个用于检测模拟器的方法&#xff1a; public static boolean isEmu…

shell脚本echo打印错位

在脚本中使用echo命令获取字段时&#xff0c;打印后字符串错位了。 脚本大致如下&#xff1a; #!/bin/bash source /etc/profile export LANGen_US.UTF-8 now_datedate "%Y-%m-%d %H:%M" filescat ***Path.txt now_daydate "%Y-%m-%d" separatorecho…

工业视觉AI应用总结记录

在工业应用中&#xff0c;一些复杂场景下AI识别用的越来越多了&#xff0c;下面是应用的概念的简单汇总梳理&#xff0c;做记录备份使用。 1.场景分类 AI的场景分类简单来说包含但不限于图像分类、图像分割和目标检测以及字符识别等等。 图像分类 是对整幅图像来说的&#xf…

新鲜出炉!这一套二手平台管理系统,太牛了,直接领取【带源码】

​今天给大家分享一套基于SpringbootVue的二手平台管理系统源码&#xff0c;在实际项目中可以直接复用。(免费提供&#xff0c;文末自取) 一、系统运行图&#xff08;设计报告和接口文档&#xff09; 1、登陆页面 2、后台页面 3、设计报告包含接口文档 二、系统搭建视频教程 …

基于RKNN的YOLOv5安卓Demo

1.简介 基于RKNPU2 SDK 1.6.0版的安卓YOLOv5演示应用程序&#xff0c;选择图片进行对象检测并显示识别结果。 GitHub源码地址&#xff1a;https://github.com/shiyinghan/rknn-android-yolov5 2.实现过程 参考RKNN官方库RKNN Model Zoo提供的YOLOv5对象检测demo&#xff0c…

SQL注入sqli_labs靶场第三题

?id1and 11 and 11和?id1and 11 and 11进行测试如果11页面显示正常和原页面一样&#xff0c;并且12页面报错或者页面部分数据显示不正常&#xff0c;那么可以确定此处为字符型注入。 根据报错信息判断为单引号带括号注入 联合查询&#xff1a; 猜解列名 ?id1) order by 3-…

Java毕业设计 基于springboot vue撸宠平台 宠物系统

Java毕业设计 基于springboot vue撸宠平台 宠物系统 springboot撸宠平台 宠物系统 功能介绍 首页 图片轮播 用户或商家注册 用户或商家登录 登录验证码 店铺信息 店铺详情 店铺投诉 宠物信息 宠物详情 预订 退订 搜索 收藏 点赞 踩 评论 个人中心 更新信息 我的收藏 在线客服…

input输入限制:自动补全两位小数、金额限制两位小数、只能输入正整数

金额自动补全两位小数 <el-input v-model.trim"form.invoice_price" clearable oninput"valuevalue.match(/\d\.?\d{0,2}/,)" blur"form.invoice_priceJEblurFn(form.invoice_price)"/>function JEblurFn(value){return valueNumber(va…

提升法律文书起草效率:AlphaGPT 助力律师快速生成诉讼和仲裁文件

法律文书起草对于法律专业人士而言是一项基础而关键的任务。无论是民事、刑事还是行政诉讼&#xff0c;以及仲裁案件&#xff0c;精确的法律文书撰写对于案件的成功至关重要。然而&#xff0c;这一过程往往既耗时又复杂&#xff0c;尤其是在处理复杂的案情和面对当事人难以理解…

syncfusion-diagram:demo1如何实现

xmlns:syncfusion"http://schemas.syncfusion.com/wpf" xmlns:stencil"clr-namespace:Syncfusion.UI.Xaml.Diagram.Stencil;assemblySyncfusion.SfDiagram.WPF"当我们进入syncfusion的diagram中&#xff0c;可以看到&#xff0c;一个非常炫酷的例子 不仅实…

抖音招聘小程序可以通过抖音直播进行招聘

现在就是抖音报吧&#xff0c;又叫报白名单&#xff0c;它是可以通过抖音直播进行招聘&#xff0c;也可以在小视频中添加小程序&#xff0c;然后不会受到流量的限制。正常&#xff0c;如果您要是在抖音直播&#xff0c;或者是在视频里头说招聘两个字的话&#xff0c;都直播的话…

openGauss 5.0 单点企业版部署_Centos7_x86(下)

上一篇分享了安装环境、配置、创建用户&#xff0c;本篇将继续分享执行、安装、访问数据库。 8、目录规划 --创建存放安装包的目录 mkdir -p /topsoft/soft/openGauss chmod 777 -R /topsoft/soft--创建目录 目录会自动创建&#xff0c;可选择不创建 mkdir -p /topsoft/huaw…

为什么要部署IP SSL证书?怎么申请?

我们需要知道什么是IP SSL证书。SSL&#xff0c;全称为Secure Sockets Layer&#xff0c;即安全套接层&#xff0c;是为网络通信提供安全及数据完整性的一种安全协议。而IP SSL证书就是基于SSL协议的一种证书&#xff0c;它能够为网站和用户的数据传输提供加密处理&#xff0c;…

对称加密学习

对称加密是一种加密技术&#xff0c;它使用相同的密钥进行数据的加密和解密操作。这种加密方法因其高效性和速度优势&#xff0c;在数据加密领域得到了广泛的应用。 下面是两篇文章&#xff1a; AES加密学习-CSDN博客 加密算法学习-CSDN博客 推荐关注加密专栏&#xff1a; …

ThinkPHP审计(1) 不安全的SQL注入PHP反序列化链子phar利用简单的CMS审计实例

ThinkPHP代码审计(1) 不安全的SQL注入&PHP反序列化链子phar利用&简单的CMS审计实例 文章目录 ThinkPHP代码审计(1) 不安全的SQL注入&PHP反序列化链子phar利用&简单的CMS审计实例一.Thinkphp5不安全的SQL写法二.Thinkphp3 SQL注入三.Thinkphp链5.1.x结合phar实现…

Git可视化工具 - 推荐

概述 Git版本管理工具是我们日常开发中常用的工具&#xff0c;熟练使用它可以提高我们的工作效率。 当然老司机基本使用命令行的方式进行操作&#xff0c;新手可借助可视化工具来进行过渡&#xff0c;命令行与可视化工具结合使用来加深对Git的熟悉程度。 下面推荐两个较受欢迎…

[蓝桥杯 2023 国 B] 班级活动

[蓝桥杯 2023 国 B] 班级活动 题目描述 小明的老师准备组织一次班级活动。班上一共有 n n n 名&#xff08; n n n 为偶数&#xff09;同学&#xff0c;老师想把所有的同学进行分组&#xff0c;每两名同学一组。为了公平&#xff0c;老师给每名同学随机分配了一个 n n n 以…