# h-mock-middleware **Repository Path**: hlx90/h-mock-middleware ## Basic Information - **Project Name**: h-mock-middleware - **Description**: h-mock-middleware 简单的mock中间件,提供本地json文件mock和代理mock。 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2017-02-09 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 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())。 ## 仓库地址 - oschina - ## TODO - English translation. - 完善设置功能。 - 整理代码。