Have ideas to improve npm?Join in the discussion! »

    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.
    • 完善设置功能。
    • 整理代码。

    Install

    npm i h-mock-middleware

    DownloadsWeekly Downloads

    5

    Version

    0.6.1

    License

    ISC

    Unpacked Size

    17.3 kB

    Total Files

    3

    Last publish

    Collaborators

    • avatar