cf-mock-server:前端 mock 数据解决方案
2018-10-21阅读量
简介
cf-mock-server 是目前前端二组正在使用的mock数据解决方案,使得前端在开发过程中可自定义接口数据,不依赖后端服务,修改数据热更新,可以方便地测试不同情况的数据,提高了开发效率。
在设计上,既可以单独跑一个Node服务,也可以作为中间件挂载到其他服务上,增强了可扩展性。有比较完善的测试用例,对核心的中间件代码和工具类函数进行单元测试,覆盖率99%。目前放在个人Github上维护,并搭配Travis Ci部署了持续集成环境,欢迎star。
Features
- 支持中间件方式挂载服务,可用于Express和Koa搭建的Node服务
- 支持单独开启一个Koa服务提供mock数据
- 支持命令行方式启动服务
- 修改配置文件热更新
- 支持自定义Response Header
- 支持请求参数配置使用正则表达式
- 支持请求参数不完全匹配
- 支持RESTful风格的API
- 支持请求路径的模糊匹配
代码
项目代码结构:
.
|__lib
| |__middleware // node 中间件
| | |__index.js
| | |__parse.js
| | |__match.js
| |__server // node server
| | |__koa.js
| |__utils // 工具类
| | |__log.js
| | |__index.js
| | |__error.js
|__test // 测试
| |__expressMiddleware.test.js
| |__utils.test.js
| |__koaMiddleware.test.js
middleware
中的index.js
提供了express和koa的中间件接口,以express为例:
而parse.js
负责在注册中间件前将用户的API配置处理成我们需要的格式:
match.js
则是当请求经过中间件时,去匹配我们处理过的API配置,找到对应的value:
然后对value进行解析,如果是文件路径则返回文件的内容,如果是JSON字符串则返回json。
同时,我们定义了自己的错误类型去显示及定位错误信息,当配置文件有问题时或请求匹配有问题时都会将错误信息展示出来:
utils/index.js
则是一些工具类函数,例如路径的模糊匹配(这个算法不知道大家有没有更好的解):
最后,这一系列的功能需要有完善的测试用例保证其可维护性,以测试koa中间件功能为例:
测试结果,最后是代码覆盖率:
以上,欢迎各路大神code review,我自己也在不断优化代码,尽量做到简洁,可读性强。match.js
以及parse.js
的代码改了N次,因为同组的小伙伴看了直呼看不懂,其实我自己过几天也看不懂==
严格来说不算线上运行的代码,但是也解决了平时开发的效率问题,总之晒码大赛分母喜+1
v1.4.14