本地 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 多數據,新增數據無需重啓服務

缺點

需單獨啓動數據庫,啓動後臺項目(提供查詢及保存操做),啓動前臺項目(前臺保存頁面及展現頁面)

相關文章
相關標籤/搜索