UNPKG

swagger-api-generator

Version:
126 lines (116 loc) 3.67 kB
var path = require('path') var fs = require('fs') // var pathConfig = require('../config') export function generateApiList (from, to = './') { // 如果to存在,就保留 let apiConfigList = require(from) var TotalFile = `import api from './client'\n\n` + `// 本文件使用configList生成器生成的configList文件生成,请不要手动修改\n\n` + `${generateApiFunctionStr(apiConfigList)}\n` fs.writeFileSync( path.join(__dirname, to, 'index.js'), TotalFile ) function generateApiFunctionStr (array) { var arrayOutputStr = '' array.forEach((data, index) => { if (data.FFModel !== '暂无') { arrayOutputStr += `${generateApi(data)}\n` } }) return arrayOutputStr } function generateApi (api) { let output = `export function ${api.FFModel} (payload) {\n` if (api.formData) { output += ` const { attachment, user_id, Authorization } = payload\n` + ` return api.v1FormDataRequest({\n` + ' url: `' + `${getUrl(api.path)}` + '`,\n' + ` attachment,\n` + ` Authorization\n` + ` })\n` } else { if (api.parameters.path) { output += getApiPathParams(api.parameters.path) } output += ` const config = {\n` + ` method: '${api.method}',\n` + ' url: `' + `${getUrl(api.path)}` + '`,\n' + ` }\n` if (api.needAuth) { output += ' config.headers = { Authorization: payload.Authorization }\n' } if (api.parameters.formData) { output += getApiDataParams(api.parameters.formData) output += ` config.data = data\n` } if (api.parameters.query) { output += getApiQueryParams(api.parameters.query) } if (api.easySignature) { let signP = '' if (api.parameters.formData) signP = 'data' if (api.parameters.query) signP = 'params' if (api.parameters.formData && api.parameters.query) signP = '{ ...data, ...params }' output += ` config.params = easySignature(${signP})\n` } else { if (api.parameters.query) output += `\tconfig.params = params\n` } output += ` return api.v1Request(config)\n` } output += '}\n\n' return output } function getApiPathParams (data) { let output = `\tconst { ${getPayloadKeys(data)} } = payload\n` return output } function getApiDataParams (data) { let output = ' const data = {}\n' + ` const dataKeyList = ${getKeys(data)}\n` + ` dataKeyList.forEach(key => {\n` + ` if (payload[key]) {\n` + ` data[key] = payload[key]\n` + ` }\n` + ` })\n` return output } function getApiQueryParams (data) { let output = ' const params = {}\n' + ` const paramsKeyList = ${getKeys(data)}\n` + ` paramsKeyList.forEach(key => {\n` + ` if (payload[key]) {\n` + ` params[key] = payload[key]\n` + ` }\n` + ` })\n` return output } function getKeys (dataArray) { let output = '[' dataArray.forEach((data, index) => { if (index === dataArray.length - 1) { output += `'${data.key}'` } else { output += `'${data.key}', ` } }) output += ']' return output } function getPayloadKeys (dataArray) { let output = '' dataArray.forEach((data, index) => { if (index === dataArray.length - 1) { output += `${data.key}` } else { output += `${data.key}, ` } }) return output } function getUrl (path) { return path.replace(/\{/gi, '${') } }