1.0.2 • Published 3 years ago

swagger-mock-generator v1.0.2

Weekly downloads
99
License
ISC
Repository
github
Last release
3 years ago

swagger-mock-generator npm version

简介

根据swagger文档地址生成mock数据,简化前端mock的工作量

安装

npm install swagger-mock-generator

快速上手

1.基础用法:

根目录创建文件 "sw.js"

  const sw = require('swagger-mock-generator');
  
  sw({
    "port": "8089", // 程序监听端口
    "swaggerOptions": {
      // swagger文档页面,比如http://xxxx/swagger-ui.html
      "url": "http://xxxx/swagger-ui.html"
    }
  });

node sw --clean --pull --server

等待几秒后,访问localhost:8089 + 接口路径可访问到mock数据

2.进阶用法

命令

以下命令:

node sw --clean --pull --server

等价于

node sw -c -p -s // 简写版本

也可以等价于分别执行:

node sw --clean // 清除swagger生成的mock数据
node sw --pull // 从swagger文档上遍历,生成mock数据
node sw --server // 监听指定端口,开启服务

等价于

node sw -c
node sw -p
node sw -s

命令参数可以按需使用,clean和pull并不是每次启动都需要;比如我已经生成过mock数据,那么只需要node sw --server

配置

上述的简化配置,需要在代码中把使用mock的接口域名改为localhost:8089,但现实中如果可以不修改会更方便,即mock接口和正常接口共用一个域名。使用fail回调函数可以做到

另外,对整个swagger文档进行遍历,对生成出我们本不需要的mock数据,这时候我们可以加入白名单filterReg

sw.js:

  const run = require('./index.js');
  const httpProxy = require('http-proxy');
  const proxy = httpProxy.createProxyServer({});

  run({
    "port": "8089", // 程序监听端口
    // 请求没有被mock拦截,就转发到开发服务的url,这使得mock和非mock的接口可以使用同一个域名
    "fail": (req, res) => {
      proxy.web(req, res, {
        target: `http://127.0.0.1:8088`
      });
    },
    "swaggerOptions": {
      // swagger文档页面,比如http://xxxx/swagger-ui.html
      "url": "http://xxxx/swagger-ui.html"
      "filterReg": /getOverallBroadcastingData/, // 可以是URL正则或者为空,用于匹配swagger上的接口,如果空则匹配swagger上所有。
    }
  });

3.更多用法 除此之外,还有更多配置的字段。做到适合的配置,可以最大提高mock的效率。

配置说明

字段类型用法
portstring程序监控端口
failfunction请求没有被mock命中的回调函数
extendMockArrobject[]扩展mock数据,格式{url: string, data: object}
swaggerOptionsObject从swagger上生成mock过程的相关配置
swaggerOptions.urlstringswagger文档地址,如http://xxxx/swagger-ui.html
swaggerOptions.filterRegregexp白名单规则,推荐接口量多的时候使用
swaggerOptions.arrayMockNumObject数组型数据的模拟长度,根据属性min-max,在他们之间随机
swaggerOptions.arrayMockNum.minnumber数组模拟长度最小值
swaggerOptions.arrayMockNum.maxObject从swagger上生成mock过程的相关配置
swaggerOptions.formatterfunction格式化函数,用于对数据做一些统一特殊处理