本地 mock 服务搭建
现有状况剖析
每个公司都有不同的状况,当初所在的公司有很大的网络拜访限度,出于平安思考很多网站都不能拜访,有的网站明天能够关上今天就打不开了,就像这种 mock
服务网上多了去了(淘宝的 rap2 就很好用要害是收费,还反对 mock
语法),然而因为网络安全限度在公司用不靠谱也不敢用,也可能会呈现始终用的好好的而后忽然就无法访问的状况,本人造轮子呗。
具体要求
不思考入参格局校验,确保对应url
可能返回正确的数据格式即可,
尽管我的项目里调用是应用post
办法调用,然而为了疾速查看数据要求get
形式也可获取对应的数据
同时须要设置容许跨域拜访
第一版实现计划
- 用一个大的对象数组
objArr
,来包含所有的url
和对应的responseBody
- 应用
node
启动一个httpServer
- 配置
url
与对应数据的匹配关系 - 依据申请的
url
通过取大对象数组(objArr
)里某个属性值返回对应对象的body
// api_user.js 数据与url匹配const data = require('../data/mock-data001_050.js')module.exports = { mock: [ { url: '/mock001', data: { apiName: '获取测试数据----mock001', code: 0, body: data.mock001, }, }, { url: '/mock002', data: { apiName: '接口形容---对应数据的属性值', code: 0, body: data.mock002, }, }, ],}
// data/mock-data001_050.js 即数据文件const data = {}data.mock001 = { name: '@cname',}data.mock002 = { age: '@age',}module.exports = data
长处
根底性能满足要求,只需启动一个服务
毛病
- 增加数据后须要重新启动服务
- 随着工夫累积,大的对象数组越来越大
即使通过减少文件的办法来优化后仍旧很大(因为有的responseBody
里蕴含大量的数据)
// 每个文件里寄存50个接口及对应的返回数据let data001_050 = require('../data/mock-data001_050.js')let data051_100 = require('../data/mock-data051_100.js')let data101_150 = require('../data/mock-data101_150.js')const data = { ...data001_050, ...data051_100, ...data101_150 }
不仅数据量越来越大,url
也越来越多,api
文件也会越来越大
第二版实现计划
之前始终感觉应用数据库可能会有点麻烦,就始终凑合着应用第一版的计划,上周刚好工作量不大,两天不到就搞定了。还是很称心的。
启用mongodb
数据库,所有数据均保留在数据库,便于数据导出及奉献
起初始终认为不能在本人机器上启动数据库(个别软件无奈失常装置且无管理员权限),起初发现有解压版的mongodb
数据库,解压即可应用。下载下来试了下发现能用。
mongodb
数据库进行文件导入导出的时候发现没有对应的命令。经搜素后发现操作工具与数据库离开了(记得以前版本是合在一起的,解压后就能用),须要独自下载并搁置于数据库bin
目录,通过尝试果然如此。
mongodb
能够间接存储json
对象,始终认为只能存储字符串
react
我的项目配置代理时须要注意装置的http-proxy-middleware
版本的问题,装置后依据文档配置发现我的项目报错,提醒用法不正确,起初找起因发现默认装置的是^0.20.0
而文档里是^1.X
的用法。批改版本后失常启动
长处
从数据库查可存储 N 多数据,新增数据无需重启服务
毛病
需独自启动数据库,启动后盾我的项目(提供查问及保留操作),启动前台我的项目(前台保留页面及展现页面)