提高生产率swagger接口文档映射生成前端(Typescript)接口方法

本文档介绍如何利用Swagger接口文档自动生成前端(使用Typescript)的接口调用方法,包括定义URL,解析Swagger地址获取JSON数据,整理接口文件,写入接口方法,以及相关参数处理。
摘要由CSDN通过智能技术生成

前面整理过swagger生成javascript的接口方法,最近再整理下ts的吧

一、定义url地址和引入依赖

const fs = require('fs')
const path = require('path')
const parse = require('swagger-parser')
const beautify = require('js-beautify').js_beautify;
const swaggerUrl = 'https://www.**.com/v2/api-docs?group=1rest';
// api接口方法存放目录
const API_PATH = path.resolve(__dirname, './src/apitest')

二、入口方法解析swagger地址获得json数据

const gen = async () => {
   

  isExist();
 
  try {
   
    // 解析url获得json数据
    const parsed = await parse.parse(swaggerUrl)
    const paths = parsed.paths
    const pathsKeys = Object.keys(paths)	// 获取url路径
    const pathsKeysLen = pathsKeys.length
    const modulesMap = new Map()
    for (let i = 0; i < pathsKeysLen; i++) {
   
      const item = pathsKeys[i]
      const itemAry = item.split('/')
      const pathsItem = paths[item]
      let fileName = itemAry[4]
      if (!fileName) continue
      fileName = fileName.toLowerCase()
      // 创建模块目录
      isExist(fileName)
      // 完整路径
      pathsItem.allPath = item
      if (modulesMap.has(fileName)) {
   
        const fileNameAry = modulesMap.get(fileName)
        fileNameAry.push(pathsItem)
        modulesMap.set(fileName, fileNameAry)
      } else {
   
        modulesMap.set(fileName, [pathsItem])
      }
    }
    getModules(modulesMap)
  } catch (e) {
   
    console.log(e)
  }
};

gen();

三、判断目录是否存在

// 判断目录是否存在
const isExist = (lastPath = '') => {
   
  const privatePath = `${
     lastPath ? API_PATH + '/' + lastPath : API_PATH}`
  const stat = fs.existsSync(privatePath)
  if (!stat) {
   
    fs.mkdirSync(privatePath)
  }
  if (!lastPath) {
   
    const configPath = `${
     API_PATH}/config.tsx`
    // api 目录下写入 config文件
    fs.access(configPath, function (err) {
   
      if (err && err.code === 'ENOENT') {
   
        fs.writeFileSync(`${
     API_PATH}/config.tsx`, 'export const ip = \'https://test.××××.com/\'')
      }
    })
  }
}

四、相同模块接口整理输入ts文件

// 整理出相同模块路径
const getModules = (map) => {
   
  let moduleList = [];
  map.forEach((value, key) =><
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值