本地 mock 服务搭建

本地 mock 服务搭建

现有状况分析

每一个公司都有不一样的状况,如今所在的公司有很大的网络访问限制,出于安全考虑不少网站都不能访问,有的网站今天能够打开明天就打不开了,就像这种 mock 服务网上多了去了(淘宝的 rap2 就很好用关键是免费,还支持 mock 语法),可是因为网络安全限制在公司用不靠谱也不敢用,也可能会出现一直用的好好的而后忽然就没法访问的状况,本身造轮子呗。node

具体要求

不考虑入参格式校验,确保对应url可以返回正确的数据格式便可,
虽然项目里调用是使用post方法调用,可是为了快速查看数据要求get方式也可获取对应的数据
同时须要设置容许跨域访问react

初版实现方案

  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

优势

基础功能知足要求,只需启动一个服务mongodb

缺点

  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文件也会愈来愈大json

第二版实现方案

以前一直感受使用数据库可能会有点麻烦,就一直凑合着使用初版的方案,上周恰好工做量不大,两天不到就搞定了。仍是很满意的。api

启用mongodb数据库,全部数据均保存在数据库,便于数据导出及贡献跨域

起初一直觉得不能在本身机器上启动数据库(通常软件没法正常安装且无管理员权限),后来发现有解压版的mongodb数据库,解压便可使用。下载下来试了下发现能用。数组

mongodb数据库进行文件导入导出的时候发现没有对应的命令。经搜素后发现操做工具与数据库分开了(记得之前版本是合在一块儿的,解压后就能用),须要单独下载并放置于数据库bin目录,通过尝试果真如此。安全

mongodb能够直接存储json对象,一直觉得只能存储字符串网络

react项目配置代理时须要留意安装的http-proxy-middleware版本的问题,安装后根据文档配置发现项目报错,提示用法不正确,后来找缘由发现默认安装的是^0.20.0而文档里是^1.X的用法。修改版本后正常启动

优势

从数据库查可存储 N 多数据,新增数据无需重启服务

缺点

需单独启动数据库,启动后台项目(提供查询及保存操做),启动前台项目(前台保存页面及展现页面)

相关文章
相关标签/搜索