代码如下,请求swagger接口数据,自动创建api相关代码
const fs = require('fs');
const axios = require('axios');
const { Console } = require('console');
function api1() {
return axios.get('http://192.168.13.204:9000/backstage/v2/api-docs')
}
// function api2() {
// return axios.get('http://192.168.13.45:8086/v2/api-docs')
// }
axios.all([api1()])
.then(axios.spread(function(...args) {
// 两个请求现在都执行完成
args.forEach(res => {
let path = res.data.paths
let map = {}
Object.keys(path).forEach(item => {
let name = null
let cur = item.split('/')
if (item.includes('{id}')) {
if (cur.includes('info')) {
name = 'infoId'
} else if (item.includes('delete') && cur[cur.length - 1].includes('{id}')) {
name = 'deleteId'
} else {
let char = cur[cur.length - 1]
let value = char[0].toUpperCase() + char.slice(1)
name = `delete${value}Id`
}
} else {
name = item.split('/')[item.split('/').length - 1]
}
let message = path[item]
if (message.post) {
if (map[message.post.tags[0]]) {
map[message.post.tags[0]].push({
url: item,
method: 'post',
comment: message.post.summary + '=>' + message.post.tags[0],
name
})
} else {
map[message.post.tags[0]] = [{
url: item,
method: 'post',
title: message.post.tags[0],
comment: message.post.summary + '=>' + message.post.tags[0],
name
}]
}
} else if (message.get) {
if (item.includes('{id}')) {
item = item.replace('{id}', '${id}')
}
if (map[message.get.tags[0]]) {
map[message.get.tags[0]].push({
url: item,
method: 'get',
title: message.get.tags[0],
comment: message.get.summary + '=>' + message.get.tags[0],
name
})
} else {
map[message.get.tags[0]] = [{
url: item,
method: 'get',
title: message.get.tags[0],
comment: message.get.summary + '=>' + message.get.tags[0],
name
}]
}
}
})
Object.keys(map).forEach(item => {
let value = map[item]
let title = '//' + map[item][0].title + '\r\n'
let apiFileName = ''
let api = value.map(cur => {
let par = ''
if (cur.url.includes('{id}')) {
par = 'id'
} else if (cur.method == 'post') {
par = 'data'
}
let apiName = ''
for (let i in cur.url.split('/')) {
if (cur.url.split('/')[i] == '1.0') {
apiName = cur.url.split('/')[i - 1]
}
}
apiFileName = apiName
let methodName = apiName + cur.name.charAt(0).toUpperCase() + cur.name.slice(1)
let value = `//${cur.comment}\r\nexport const ${methodName} = (${par}) => request({ url: \u0060${cur.url}\u0060, method: '${cur.method}'${ par === 'data' ? ', data: data' : '' }})\r\n\r\n`
return value
})
let template = `import request from '@/utils/request'\r\n${title}${api.join('')}`
try {
fs.accessSync(`./src/code/${apiFileName}`, fs.constants.F_OK)
console.log('code----->下面文件夹---已经存在,写入相关的api js文件:', apiFileName)
} catch {
console.log('code----->下面文件夹不存在,创建对应得文件夹:', apiFileName)
fs.mkdirSync(`./src/code/${apiFileName}`)
fs.mkdirSync(`./src/code/${apiFileName}/api`)
}
try {
console.log('js文件=======已存在,请并写入')
fs.accessSync(`./src/code/${apiFileName}/api/${apiFileName}Api.js`, fs.constants.F_OK)
fs.unlinkSync(`./src/code/${apiFileName}/api/${apiFileName}Api.js`)
fs.writeFileSync(`./src/code/${apiFileName}/api/${apiFileName}Api.js`, template, { flag: 'a', encoding: 'utf8' })
} catch {
console.log('js文件不存在,请创建并写入')
fs.writeFileSync(`./src/code/${apiFileName}/api/${apiFileName}Api.js`, template, { flag: 'a', encoding: 'utf8' })
}
})
})
}))