乐趣区

关于前端:本地-mock-服务搭建

本地 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 多数据, 新增数据无需重启服务

毛病

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

退出移动版