h-mock-middleware

0.6.1 • Public • Published

h-mock-middleware - mock中间件

注意事项

此中间件支持 Express app.use(req,res,next) 和 koa app.use(ctx,next) 的调用,但 mockSettings.js 中,仅支持类 Express 的 (req,res,next) 形式的中间件 handle 。

使用方法

配置文件

配置文件mockSettings.js支持修改立即生效。支持js函数执行。

// mockSettings.js
mockSettings = {
    "delay": 0, // 全局延时
    "timeout": 10000, // 请求超时设置
    "temDir": "tem", // 自动记录requestRemote的结果目录
    "dist_dir": {
        "js": "dist-prod/js"
    },
    "mockList": [{
        //     'reg': '/api/controller/action', // 匹配的正则表达式
        //     'handle': ajaxSync('./path/to/mockdata.json') // 发送对应json文件
        // }, {
        'reg': '/api',
        'handle': requestRemote('http://a.b.c') // 代理到对应的远端
        // }, {
        //     'reg': '/api',
        //     'handle': requestRemote('https://publish.online.url/')
        // }, {
        //     'reg': '/data/',
        //     'handle': ajaxDirSync({dirBasePath: './data/', pathPrefix: '/data/'}) // 返回文件,将url的前缀用pathPrefix替换,并返回相对于dirBasePath地址的文件。
    }, {
        'reg': '^/dist/',
        'handle': routerReplace('^/dist/', '/') // 替换router url的指定正则表达式部分为指定内容
    }, {
        'reg': '/data/',
        'handle': ajaxDirSync() // 默认参数{dirBasePath: './',pathPrefix: '/'}
    }]
}

Express 实例用法

以webpack开发服务为例, devServer.before 第一参数是 Express app 实例。

// webpack.config.js
var middewareFun = require('h-mock-middleware').middleware;
module.exports = {
    //...
    devServer: {
        before: function(app, server) {
            app.use(middewareFun());
        }
    }
};

webpack运行目录中放置配置文件mockSettings.js(见上文)

gulp 工作流

gulpfile.js文件中:

// gulpfile.js
var middewareFun = require('h-mock-middleware').middleware;
gulp.task('serve', function() {
    browserSync.init({
        port: 3000,
        server: {
            baseDir: "./",
        },
        middleware: [middewareFun()],
    });
}

gulpfile.js文件同级目录中放置配置文件mockSettings.js(见上文)

其他事项

为了使配置文件mockSettings.js可以使用js注释语法,代码中使用了eval,请在使用本包的时候,注意mockSettings.js需是可信的。
修改配置文件,不必重启进程,在下一次请求就会生效。
未配置temDir时,请求远端数据不会自动记录。
配置文件中可以使用js注释语法。
handle 函数抛出异常,会返回500状态码和异常信息。 handle 不调用next就会由当前handle处理;调用next会继续检查下一个mockItem。 遍历mockList时,最后一个handle调用next会转移控制权到其他中间件。 在 koa use中, handle 调用 req.status 时,会设定 response.status,并且之后调用 req.end 时,不会被改成 200 。 在 koa use中, handle 调用 req.end 时,若未设定 status ,将自动默认设定 200 ,并且会结束本中间件(resolve())。

仓库地址

TODO

  • English translation.
  • 完善设置功能。
  • 整理代码。

Dependents (0)

Package Sidebar

Install

npm i h-mock-middleware

Weekly Downloads

2

Version

0.6.1

License

ISC

Unpacked Size

17.3 kB

Total Files

3

Last publish

Collaborators

  • hlx