从rap2数据导入yapi中
2023-09-27 14:21:27 时间
复制教程: https://www.jianshu.com/p/4bd2ec5cb5e7
主要 Rap2导出swagger2格式json:
原理
采用曲线救国的方式,rap2 =》 swagger.json => 导入yapi。
输入rap2某个项目的json地址,下载json文件,点击转换,即可自动下载对应的swagger.json,然后再yapi中新建一个项目,导入swagger.json即可。
<!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> <script>function changeRap() { var origin = document.getElementById('origin').value; if (!origin) return alert('原始json不能为空'); if (origin.indexOf('http') === 0) { $.ajax({ type: 'get', url: origin, dataType: 'json', success: r => { var m = {}; m.swagger = '2.0'; m.info = {}; m.info.title = r.data.name; m.info.description = r.data.description; m.tags = r.data.modules.map(({ name, description }) => ({ name, description })); m.paths = parsePaths(r.data.modules); m.definitions = parseDefinitions(r.data.modules); //下载为json文件 var Link = document.createElement('a'); Link.download = "api.json"; Link.style.display = 'none'; // 字符内容转变成blob地址 var blob = new Blob([JSON.stringify(m)]); Link.href = URL.createObjectURL(blob); // 触发点击 document.body.appendChild(Link); Link.click(); // 然后移除 document.body.removeChild(Link); } }) } } function parsePaths(modules) { var paths = {}; for (var i = 0, len = modules.length; i < len; i++) { for (var j = 0, jlen = modules[i].interfaces.length; j < jlen; j++) { var m = modules[i].interfaces[j]; paths[m.url] = {}; var method = m.method.toLowerCase(); paths[m.url][method] = {}; paths[m.url][method].tags = [modules[i].name]; paths[m.url][method].summary = m.name; if (method === 'post') paths[m.url][method].consumes = ["multipart/form-data"]; paths[m.url][method].description = m.description; paths[m.url][method].parameters = parseParameters(m.properties, method); paths[m.url][method].deprecated = false; paths[m.url][method].responses = { "200": { "description": "ok", "schema": { "$ref": "#/definitions/Response" + m.id } } }; } } return paths; } function parseParameters(props, method) { var list = []; for (var i = 0, len = props.length; i < len; i++) { var p = props[i]; if (p.scope === 'response') continue; list.push({ name: p.name, "in": method === 'get' ? 'query': 'formData', example: 'default', description: p.description || '', type: p.type.toLowerCase(), required: p.required }); } return list; } function parseDefinitions(modules) { var ds = {}; for (var i = 0, len = modules.length; i < len; i++) { for (var j = 0, jlen = modules[i].interfaces.length; j < jlen; j++) { var m = modules[i].interfaces[j]; for (var n = 0, nlen = m.properties.length; n < nlen; n++) { var p = m.properties[n]; if (p.scope === 'request') continue; var suf = p.parentId === -1 ? m.id: p.parentId; if (!ds['Response' + suf]) ds['Response' + suf] = { title: 'Response' + suf, type: "object", properties: {} }; if (p.type === 'Object') ds['Response' + suf].properties[p.name] = { "$ref": "#/definitions/Response" + p.id }; else if (p.type === 'Array') ds['Response' + suf].properties[p.name] = { type: "array", items: { "$ref": "#/definitions/Response" + p.id } }; else ds['Response' + suf].properties[p.name] = { type: p.type.toLowerCase(), description: p.description || '', default: p.value || undefined } } } } return ds; }</script> </head> <body> <input id="origin" /> <button onclick="changeRap()">转换</button></body> </html>
首先本地运行上面html代码,输入可以获取 rap json内容的地址,点击转换按钮即可
相关文章
- Azure 云平台用 SQOOP 将 SQL server 2012 数据表导入 HIVE / HBASE
- 短视频Demo模块:魔法相机、拍摄、导入裁剪、导入编辑的差异
- clickhouse数据导入导出
- Oracle_数据泵命令导出导入dmp文件
- Oracle中用exp/imp命令快速导入导出数据
- PLSQL 使用ODBC 数据源导入来自SQLSERVER的数据
- NEO4J 图数据库使用APOC数据导入
- 使用neo4j-import导入数据及关系
- 玩转Spring Boot 自定义配置、导入XML配置与外部化配置
- mysql source、mysqldump 导入导出数据(转)
- 不同版本的SQL Server之间数据导出导入的方法及性能比较
- Excel数据导入速度太慢
- 第76课:Spark SQL基于网站Log的综合案例实战之Hive数据导入、Spark SQL对数据操作每天晚上20:00YY频道现场授课频道68917580
- mysql -- 数据导入导出以及表的复制
- 导入pyside2 pyside6出现libgssapi_krb5.so.2: symbol krb5_ser_context_init version krb5_3_MIT的问题
- OC 导入类 #import和@class 区别复习
- 导入安全证书到jdk步骤详细说明-原
- 【Android Studio】studio学习系列(一) 从eclipse导入project
- BlenderGIS 2.2.6导入数据NoneType 解决
- 数据导入与预处理-第6章-04pandas综合案例
- 【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★
- 《Greenplum5.0 最佳实践》数据导入 (六)
- Spring Boot + EasyExcel导入导出,简直太好用了!
- 【转载】mysql导入大批量数据出现MySQL server has gone away的解决方法
- 【云原生】Docker镜像和容器的导入导出及常用命令