搭建Mock Server

搭建Mock Server

1.為什么要搭建mock-server?

為了更好的分工合作,讓前端能在不依賴后端環境的情況下進行開發,其中一種手段就是為前端開發者提供一個 web 容器,這個本地環境就是 mock-server。

目前很多前端 mock 數據的方案的基本流程都是使用 node.js 來模擬 http 請求,配置 router 返回 mock 數據。

一個比較好的 mock-server 該有的能力:

1.與線上環境一致的接口地址,每次構建前端代碼時不需要修改調用接口的代碼

2.所改即所得,具有熱更新的能力,每次增加 /修改 mock 接口時不需要重啟 mock 服務,更不用重啟前端構建服務

3.能配合 Webpack

4.mock 數據可以由工具生成不需要自己手動寫

5.能模擬 POST、GET 請求

6.簡單(包括:文件結構簡單、編寫代碼簡單)?

2.我們mock server 服務器

1.就是一個基于Node的 Express web 搭建的一個本地server。

2.數據mock的思路就是在這個本地server端進行,Promise 發出http請求,通過 router 返回mock數據。

3.與線上環境一致,前端代碼構建和接口服務是分開獨立的

app.listen(3001, () => {

? debug(`The fake API server is listening on ${'3001'.rainbow}.`)

}) //啟動一個服務并監聽從 3001 端口進入的所有API連接請求

在webpack 配置中, 比較簡單:

proxy: {

? ? ? '/api/*': {

? ? ? ? target: `http://${host}:3001`,

? ? ? ? secure: false,

? ? ? },

將匹配 ‘/api/*’ 這種格式的API的域名重定向為?http://${host}:3001

4.具有熱更新的能力,每次增加 /修改 mock 接口(入口api/index.js)時自動重啟 mock 服務

nodemon 自動重啟的工具?啟動 mock?server

5.mock 數據可以由工具生成不需要自己手動寫,還能模擬 POST、GET 請求

用到LowDB,LowDB 基于Lo-Dash 中間件,?基于Node的純Json文件數據庫,LowDB支持 JSON Server 和 JSONPlaceholder.

dbs[entry] = low(`${entries[i]}/data.json`)

返回或者創建一個Lo-Dash包裹數組。然后,您可以使用這些方法: where, find, filter, sortBy, groupBy, ...和來自Underscore.db的方法

目錄結構,根據大模塊劃分了mock數據目錄結構,

每一個模塊下,都有個schemas/*.js? Object類型 default 數據定義,然后JSON.stringify(data)轉為JSON 字符串,同步寫入data.json文件中。用到Faker.js 的一些API。 (mock一些不變的數據)

每一個模塊下,都有routes/*.js , 每個模塊都對應創建了 express.Router() 實例,在具體app.get(‘/’, (req, res)) 對應的URL 或 路由 來模擬POST 或者GET 請求 以及PUT和DELETE請求,固定的status code 對應了不同的error。

?6.簡單(包括:文件結構簡單、編寫代碼簡單)

如何在src (業務代碼) 中調用mock server呢?

在src 下modules/*.js 中定義Promise 請求

?export const myFun = () => ({

  type: MYFUN,

  promise: (dispatch, getStore, api) => api.get(URL.myFun)

})

URL 對應配置了不同環境的url 請求, 生產環境(真實),開發環境 (mock server 路由),測試環境(unit test)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249383.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249383.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249383.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

請問1到10000之前,有多少升數字?(華圖教育面試題)

升數字就是從左向右讀,數值是依次上升的即可,比如123,1256,1389,但是1123,165就不是。以下是我的思路 public static void main(String[] args) {/*** 【請問1到10000之前,有多少升數字&#xf…

crm 一級菜單排序,二級菜單選中并且展開,非菜單權限的歸屬,權限粒度控制到按鈕級別...

排序 /rbac/templatetags/rbac.py from django import template from django.conf import settings import re from collections import OrderedDict register template.Library()register.inclusion_tag(rbac/menu.html) def menu(request):ordered_dictOrderedDict()menu_d…

Maven工程的多模塊

一個大項目需要一個團隊來完成,然后一個大型項目就拆分成幾塊來同時開發,節省時間,提高效率. 大致分為以下幾個模塊(僅是自身經歷): 依賴管理工程模塊:一般現在開發都是以maven來管理jar包,方便.所以整個工程的依賴統一放在一個單獨工程中,一般叫做父工程xxx-parent. 注意事項…

《淺談架構之路:前后端分離模式》

前言:分離模式 對前后端分離研究了一段時間,恰逢公司有一個大項目決定嘗試使用前后端分離模式進行,便參與其中。該項目從2016年初立項至今,平平穩穩得度過,但也涌現出越來越多的問題,絕對不是說前后端分離模…

查詢語句

1.基本查詢語句 1.1 語法: SELECT 屬性列表 FROM 表名或視圖列表 WHERE 條件表達式1 GROUP BY 屬性名1 | HAVING 條件表達式2 ORDER BY 屬性名2 ASC DESC 2.單表查詢 1.應用:查詢表中所有的記錄 2.查詢指定字段:查詢表中所有name字段的記錄 …

Nodejs+Koa2+云服務ECS 開發微信公眾號(一)之環境配置

硬件準備工作 1. 本人采用阿里云的云服務器,購買了入門級云服務ECS(293元每年); 2.針對服務器進行認證,設置個人服務器密碼; 3.購買數據盤,并將其掛載于云服務器之上(建議掛載在/…

中文詞頻統計與詞云生成

本次作業來源于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2822 中文詞頻統計 1. 下載一長篇中文小說。 下載長篇小說《西游記》 本次作業小說保存在txt文檔:xyj.txt 2. 從文件讀取待分析文本。 xyj open(rF:/xyj.txt,r,encodingutf-8)…

java SWT Browser實現瀏覽器功能并運行JavaScript代碼

一、創建簡單的瀏覽器 import org.eclipse.swt.*; import org.eclipse.swt.browser.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*;public class Myswt3 {public static void main(String [] args) {Display display new Display();final Shell she…

[JZOJ5866]【NOIP2018模擬9.13】指引

Description Input Output Sample Input 6 3 2 0 3 1 1 3 4 2 0 4 5 5 Sample Output 2 Data Constraint Hint 貪心,把旅行者和出口的x坐標降序排序。 然后從前往后掃,如果是出口,就把y坐標插進set里,如果是旅行者,就查…

scrapy框架之遞歸解析和post請求

今日概要 遞歸爬取解析多頁頁面數據scrapy核心組件工作流程scrapy的post請求發送今日詳情 1.遞歸爬取解析多頁頁面數據 - 需求:將糗事百科所有頁碼的作者和段子內容數據進行爬取切持久化存儲 - 需求分析:每一個頁面對應一個url,則scrapy工程需…

SmartGit 過期解決方案之 非商業版本安裝使用

作為前端開發的小伙伴一定有這樣的困惑,自己在日常的團隊協作配合時,提交代碼和解決沖突是我們最頭疼的問題,但是又不喜歡使用Eclipse或者IDEA這種超級占內存的編輯器,使用Git命令又是那么捉襟見肘,所以有一個好用的輕…

HDU6438 Buy and Resell 解題報告(一個有趣的貪心問題的嚴格證明)

寫在前面 此題是一個很容易想到的貪心題目,但是正確性的證明是非常復雜的。然而,目前網上所有題解并未給出本題貪心算法的任何正確性證明,全部僅停留在描述出一個貪心算法。本著對算法與計算機科學的熱愛(逃)&#xff…

Webpack不生成index.html

沒有導出你的最后2個插件,并且沒有指定html文件名dist,因為HtmlWebpackPlugin應該生成相對于path,下面是固定配置: var path require(path)var webpack require(webpack)var HtmlWebpackPlugin require(html-webpack-plugin);m…

CSS3筆記之定位篇(一)relative

知識點1:relative和absolute relative: 相對自身,并會限制內部absolute元素層疊 absolute: 相對容器,并受到父類容器relative的影響,比如:overflow:hidden/scroll fixed: 不受relative限制,只受z-index的…

洛谷P3066 [USACO12DEC]逃跑的BarnRunning Away From…

題面鏈接 一句話題意:給出以1號點為根的一棵有根樹,問每個點的子樹中與它距離小于等于l的點有多少個。 我:似乎并不好做啊。。。看了題解后大霧。。。 sol:考慮樹上差分,對于一個點,在他那個位置&#xff0…

vue使用webPack打包發布后頁面顯示空白

今天筆者將打包后,進行訪問,訪問到index.html,但是出現的是空白頁。 打包命令:npm run build,打包后的文件如下: 這是因為index.html中引入的css ,js 的路徑不對:如下圖 這個是因為webpack打包的時候引入…

第一次實驗報告

c程序實驗報告 姓名:黃志乾 實驗地點:教學樓514教室 實驗時間:3月19日實驗項目: 1、字符與ASCII碼 2、運算符與表達式的應用 3、順序結構應用程序 4、數學函數的算法描述 5、雞兔同籠的算法描述 6、確定坐標的算法描述…

Mac下Idea安裝Git報錯Xcrun問題的解決

使用過IDEA的小伙伴都知道,它和我們之前用過的Eclipse一樣強大,或者比他更強大。當它配合的Mac使用時,就會變得更得心應手,少去很多環境配置的環節。其中最典型的就是Git 由于Mac自帶就安裝了git, 大家可以通過終端輸入命令“git…

關于Django路由層簡單筆記

Django—路由層 URL配置(URLconf)就像Django 所支撐網站的目錄。它的本質是URL與要為該URL調用的視圖函數之間的映射表;你就是以這種方式告訴Django,對于客戶端發來的某個URL調用哪一段邏輯代碼對應執行。 1,簡單的路由配置 from django.urls…

hdu 5183

hdu 5183(Hash處理區間問題) 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid5183 題意:給出一個n個元素的數組,現在要求判斷 a1-a2a3-a4...../-an 中是否存在某個某個區間使得 ai-ai1ai2...(-1)j-iaj k?? 這個題要利用Hash就可以實現幾乎在 O(n) 的時間內實現查找判斷…