本地 mock 服务搭建

现有状况剖析

每个公司都有不同的状况,当初所在的公司有很大的网络拜访限度,出于平安思考很多网站都不能拜访,有的网站明天能够关上今天就打不开了,就像这种 mock 服务网上多了去了(淘宝的 rap2 就很好用要害是收费,还反对 mock 语法),然而因为网络安全限度在公司用不靠谱也不敢用,也可能会呈现始终用的好好的而后忽然就无法访问的状况,本人造轮子呗。

具体要求

不思考入参格局校验,确保对应url可能返回正确的数据格式即可,
尽管我的项目里调用是应用post办法调用,然而为了疾速查看数据要求get形式也可获取对应的数据
同时须要设置容许跨域拜访

第一版实现计划

  1. 用一个大的对象数组objArr,来包含所有的url和对应的responseBody
  2. 应用node启动一个httpServer
  3. 配置url与对应数据的匹配关系
  4. 依据申请的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

长处

根底性能满足要求,只需启动一个服务

毛病

  1. 增加数据后须要重新启动服务
  2. 随着工夫累积,大的对象数组越来越大

即使通过减少文件的办法来优化后仍旧很大(因为有的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 多数据,新增数据无需重启服务

毛病

需独自启动数据库,启动后盾我的项目(提供查问及保留操作),启动前台我的项目(前台保留页面及展现页面)