1.1.6 • Published 10 months ago

swagger-jsservice-generator v1.1.6

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

开始

根据 swaggerapi 的接口配置信息 生成含有 JSDoc 注释的 请求代码,对 vscode 的提示友好,入参和返回参数的代码提示

npm install swagger-jsservice-generator --save-dev

使用

// swagger.js
const path = require('path');
const parseSwagger = require('swagger-jsservice-generator');

const { generate, generateApi } = parseSwagger({
  url: 'http://swagger.xxxx', // 这里会自动拼接上 /swagger-resources
  module: 'user',
  output: path.resolve(__dirname, '../api'),
  apiLibName: 'axios',
  apiLibPath: 'Axios', // 如果有get请求则需要封装一下,请求接口参数目前固定为 url,data
  convert: {
    integer: 'number',
    delete: 'remove', // method 为delete 的时候会转为axios.remove(url,data),避免关键字问题
  },
});

// 生成所有api,传递url,不用传apiUrl和module
generate();
// 生成单个api,需要传递 apiUrl和module,module时文件名
generateApi();
node swagger.js
//output: api/user.js;
// 如果使用了restful风格,需要对axios包装下,
// 包装格式如下:
// AxiosUtil.[get|post|delete|put](url,data); url 和 data 是固定的生成方式,因此需要包装统一处理
import axios from 'axios';
/**
 * some description
 * @param {SomeVo} data  - 请求参数,任何请求都只接受一个data对象作为入参
 * @param {Promise<DTO>} returnObject
 *
 **/
export function getDataList(data) {
  return axios.get('/data/list', data);
}

参数说明

NameTypeDesc
urlstringswagger 文档 baseurl
apiUrlstringswagger 文档单个服务接口路径 ,和 module 要一起用
outputstring写入文件目录
modulestring在微服务中,如果只想生成单个模块,可以配置该字段,作为文件名称使用,如果生成所有模块,则取模块名称
resourcestringswagger 的接口描述配置接口 默认为 /swagger-resources
apiLibNamestring请求库名称,入如:axios
apiLibPathstring请求库地址 ,如:axios
convertobject对关键字进行转化,例如 integer 转为 number
resourceCallbackfunction(res)针对不同 swagger 版本,接口配置的响应数据不同,这里返回 urls 数数组即可,包含对 url 的描述对象数组
handleMethodCallbackfunction({ method, desc, key, paths, res })需要返回 {method,url,description,parameters,requestBody,responses} 对象
requestCompletedfunction(res)完全处理响应内容,需要返回{urls:{method,responses,requestBody,url,description,parameters}[],res},res 为传入的参数
filterPathfunction(url)有些 url 不需要生成可以使用此回调函数返回 boolean 值即可,true 为要处理
writeFileCallbackfunction({name})写入文件时,用于自定义文件名,有些模块名称使用了空格,这里可以单独处理
1.1.6

10 months ago

1.1.5

10 months ago

1.1.4

10 months ago

1.1.3

10 months ago

1.1.2

10 months ago

1.1.1

10 months ago

1.1.0

10 months ago