0.0.4 • Published 3 years ago

api-sniff-mock v0.0.4

Weekly downloads
3
License
MIT
Repository
-
Last release
3 years ago

api-sniff-mock 本地/远程mock接口嗅探及模拟工具

一个node中间件,服务于前端开发过程接口mock需要,支持本地Mock和远程Mock接口请求的方式,亦可混合使用,便于集成工程化自动化,即擦即用。

安装

npm i -D api-sniff-mock

快速上手

const apiSniffMock = require('api-sniff-mock');
const mw = apiSniffMock({
        remote: 'http://www.xxx.com', // 远程mock api请求url前缀
        root:  path.resolve(__dirname, './apiMock'), // 本地mock api所在根路径
        route: '/apiMock',  // 目标拦截路由,以对请求地址做检验,命中后开启mock功能。 参数接受字段串、正则、函数
        useVirtualRoute: true, // 是否使用虚拟route,如果值判断为真,则实际接口请求路径中不包含已配置的route参数值
        silence: true // 是否启用静默模式,如果为否会输入调试信息
    });


// browserSync

browserSync.init({
  server: {
    baseDir: "./",
     middleware: mw
}
});


// ebpack-dev-server

 devServer: {
    before(app) {
      if(process.env.npm_config_proxydev) {
        return;
      } else {
        app.use(mw)
      }
    }

    ...
 }   

本地mock示例

以模拟/api/login接口为例,配置同上述配置,本地mock数据文件路径为: /apiMock/api/login.js

// req 为request对象


var curTime = +new Date(),
start = curTime - 1000 * 90,
end = curTime + 1000 * 60;

var bodyData = req.bodyData; // post请求体数据对象
var queryData = req.queryData; // query数据对象
var pageSize = bodyData.pageSize || 10;
var pageNo = bodyData.pageNo || 1;

// 模块接口延迟
function sleep(numberMillis) { 
  var now = new Date(); 
  var exitTime = now.getTime() + numberMillis; 
  while (true) { 
    now = new Date(); 
    if (now.getTime() > exitTime) {
      doNext();
      return; 
    }
  } 
}

sleep(3000); // 延迟3秒后响应

function doNext(){

  // 响应请求
  callback({
     "code": bodyData.code,
     "password": bodyData.password,
     "sid": bodyData.sid
  });
}
0.0.4

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago