nodejs web版 mock-server 讓你更好的管理你的模擬數(shù)據(jù)

mock-server:一個(gè)基于NODEJS的WEB版的數(shù)據(jù)模擬系統(tǒng)



部分功能及優(yōu)化未在此文章中同步拾枣,最新功能以倉(cāng)庫(kù)為準(zhǔn):

https://github.com/flftfqwxf/mockserver


?demo

demo只作演示作用贸呢,并會(huì)定期清除數(shù)據(jù)

更新:

2017-7-16

修改項(xiàng)目ID為隨機(jī)hash汁雷,并以此ID為接口路徑的前綴谈宛,并刪除原設(shè)置API前綴功能

優(yōu)化代碼叮盘,及提供POST,PUT,DELETE等method type的接口預(yù)覽功能

添加功能(2017-5-4):

添加自動(dòng)導(dǎo)入數(shù)據(jù)庫(kù)

添加中英文切換


添加功能(2017-4-11):

支持跨域調(diào)用項(xiàng)目接口

添加header 代理白名單和黑名單

允許自定義項(xiàng)目接口前綴

優(yōu)化交互體驗(yàn)及BUG

功能包含:

支持可視化編輯JSON接口數(shù)據(jù)及接口文檔

支持GET膜蛔、POST处硬、PUT、DELETE等所有HTTP請(qǐng)求類型

支持指定返回狀態(tài)碼蛙紫,默認(rèn)200

支持延時(shí)返回?cái)?shù)據(jù)

支持mockjs

支持模擬接口與真實(shí)接口切換,在切換到真實(shí)接口時(shí)拍屑,并能夠自動(dòng)接收POST,GET,COOKIE等在http header請(qǐng)求的參數(shù)

先放出系統(tǒng)地址:

https://github.com/flftfqwxf/mock-server

歡迎star,并提出改進(jìn)意見


更新日志(2017-2-15):

優(yōu)化交互及文檔完善

添加返回狀態(tài)碼

添加延遲返回?cái)?shù)據(jù)

優(yōu)化部分驗(yàn)證



以下正文:

隨著最近幾年前端技術(shù)的發(fā)展,ReactJs,Angular,VueJS等框架的盛行坑傅,前后分離開發(fā)的系統(tǒng)越來(lái)越多僵驰,而前后端的分離,必然需要大量的AJAX接口來(lái)實(shí)現(xiàn)裁蚁。而由于前后端開發(fā)經(jīng)常是并行的,所以前端必須經(jīng)常需要模擬AJAX數(shù)據(jù)接口继准,以方便在后端還未準(zhǔn)備好接口時(shí)的開發(fā)及調(diào)試枉证,故此就需要mock-server服務(wù)(數(shù)據(jù)模擬服務(wù))。

剛開始移必,我準(zhǔn)備找一些開源的工具來(lái)作為mock-server室谚,而目前基于nodejs的mock-server也有不少,早期就嘗試過(guò) puer崔泵,imitator等開源系統(tǒng)秒赤,基本滿足了個(gè)人開發(fā)的需求。

但隨著其他開發(fā)人員的加入憎瘸,特別是后端的同學(xué)加入入篮,上面的系統(tǒng)便靠成了一個(gè)困擾。

第一:不方便共享和不夠簡(jiǎn)便幌甘,這些系統(tǒng)都還是基于NODEJS的潮售,新加入的同學(xué)都需要在自己本地安裝一次相應(yīng)的包和環(huán)境,比較麻煩锅风,而且每個(gè)人的MOCK-SERVER都是獨(dú)立的酥诽,不方便共享,有時(shí)需要后端開發(fā)同學(xué)先定義后接口結(jié)構(gòu)皱埠,由于他們并沒(méi)有安裝肮帐,也不是很方便,后期接口有改變時(shí)边器,也不方便同步训枢。

第二:接口切換不方便托修。以上工具,只能全局不使用mock-server與全局使用mock-server中切換肮砾,單個(gè)接口的切換诀黍,需要依賴其他配置,比如nginx為每個(gè)接口作配置仗处。

第二:功能不健全眯勾,且不方便非前端人員使用,且以上工具只是簡(jiǎn)單的模擬數(shù)據(jù)婆誓,對(duì)接口的文檔參數(shù)說(shuō)明吃环,接口分類管理等,也不夠直觀洋幻。

因此郁轻,自己就開始自己開發(fā)一個(gè)基于NODEJS的,WEB版 mock-server系統(tǒng)文留。

https://github.com/flftfqwxf/mock-server

此系統(tǒng)基于thinkjs+mysql5.7.14開發(fā)好唯,主要用于方便可視化的管理數(shù)據(jù)接口的數(shù)據(jù)模擬,接口文檔管理燥翅。

下面簡(jiǎn)單說(shuō)明一下相應(yīng)功能:


添加/編輯接口(截圖只展示部分功能):


添加接口截圖


如圖所示骑篙,大致包含了以下功能:

基本信息:



2.0后允許設(shè)置項(xiàng)目接口前綴

匹配方式:分為全地址匹配和部分匹配

有些時(shí)候,你的請(qǐng)求地址的參數(shù)是動(dòng)態(tài)的森书,比如分頁(yè)【http:192.168.0.2/a?page=1】,這個(gè)時(shí)候的路徑匹配就不能全路徑匹配靶端,而是只需要匹配【?】前部分

請(qǐng)求參數(shù)及請(qǐng)求參數(shù)說(shuō)明:

JSON web編輯器

添加了可視化的JSON編輯器凛膏,方便查看杨名,也可驗(yàn)證數(shù)據(jù)格式正確性

二次代理設(shè)置:

二次代理設(shè)置

在實(shí)際開發(fā)中,我們常常會(huì)遇到這種情況猖毫,在開發(fā)的前期台谍,數(shù)據(jù)接口的數(shù)據(jù)是模擬的,但是開發(fā)到了中后期吁断,部分真實(shí)的接口已經(jīng)開發(fā)好典唇,就需要以真實(shí)的數(shù)據(jù)來(lái)測(cè)試,在以前只能將整個(gè)mock-server服務(wù)切換到真實(shí)的接口服務(wù)上胯府,但是這樣存在一個(gè)問(wèn)題介衔,就是如果在項(xiàng)目中期,部分接口完成了骂因,部分接口沒(méi)完成炎咖,就比較麻煩,此功能就是指定某個(gè)接口去訪問(wèn)真實(shí)的接口的方法。

二次代理是指將本來(lái)代理到mock-server系統(tǒng)的接口乘盼,再次代理到其他的服務(wù)上

二次代理前綴:是指將此接口的域名指向到你想指向的地址

舉例說(shuō)明

開發(fā)中:

1)某個(gè)AJAX服務(wù),需要模擬,通過(guò)NGINX或其他方法將 [http://127.0.0.1/api]下所有請(qǐng)求,全部指向到本系統(tǒng),

并假定本系統(tǒng)啟動(dòng)后的地址為【http://127.0.0.1:8083】.

2)當(dāng)訪問(wèn)[http://127.0.0.1/api/a.json]時(shí),實(shí)際會(huì)代理到【http://127.0.0.1:8083/api/a.json】

3)當(dāng)訪問(wèn)時(shí),系統(tǒng)會(huì)在數(shù)據(jù)庫(kù)查詢到該接口,并返回模擬數(shù)據(jù)

某個(gè)接口的真實(shí)完成后:

同樣是第三步,可以通過(guò)開啟二次代理,將請(qǐng)求再次代理到真實(shí)的接口上,以此達(dá)到更靈活在模擬數(shù)據(jù)和真實(shí)數(shù)據(jù)切換目的

如:

原本被代理到【http://127.0.0.1:8083/api/a.json】返回的數(shù)據(jù),

通過(guò)設(shè)置二次代理為【http://192.168.0.1:8083】,則會(huì)返回

【http://192.168.0.1:8083/api/a.json】

而為了更靈活的設(shè)置二次代理:

分別開發(fā)了,全站級(jí)二次代理升熊、項(xiàng)目級(jí)二次代理、單個(gè)接口的二次代理

權(quán)重為全站級(jí)二次代理 <項(xiàng)目級(jí)二次代理 <單個(gè)接口的二次代理


注意:如果開啟了二次代理绸栅,在返回接口的最后一個(gè)字段將為[proxyDataSource],值為你實(shí)際請(qǐng)求的接口完整地址级野,以方便實(shí)際使用中,知道自己是訪問(wèn)的模擬數(shù)據(jù)粹胯,還是真實(shí)數(shù)據(jù)

接口返回值及參數(shù)說(shuō)明:

參數(shù)說(shuō)明
返回?cái)?shù)據(jù)

你可以通過(guò)點(diǎn)擊從【從二次代理中獲取數(shù)據(jù),并填充,保存后生效】從你設(shè)置的二次代理中獲取到真實(shí)數(shù)據(jù)蓖柔,達(dá)到類似postman驗(yàn)證數(shù)據(jù)接口正確性的功能

開啟mockjs:

同時(shí),為了更好的模擬數(shù)據(jù)风纠,整合了mockjs况鸣,mockjs官網(wǎng)

header頭信息返回?cái)?shù)據(jù):


除了返回json外,有些時(shí)候還需要返回一些特定的header信息竹观,如登錄的token驗(yàn)證

如此一個(gè)模擬數(shù)據(jù)基本成型.

接口列表:

接品列表管理

提供搜索镐捧、復(fù)制、快速開啟關(guān)閉二次代理功能臭增,點(diǎn)擊接口可以直接查看接口返回內(nèi)容

其他的功能:


全局設(shè)置:

全局二次代理

全局二次代理前綴:

前面已講過(guò)作用懂酱,此處是設(shè)置一個(gè)全局二次代理,當(dāng)你在項(xiàng)目或添加接口時(shí)沒(méi)有二次代理時(shí)誊抛,就會(huì)使用此二次代理(強(qiáng)烈建議設(shè)置列牺,因?yàn)楫?dāng)你訪問(wèn)一個(gè)在本系統(tǒng)中根本沒(méi)有定義的接口時(shí),如果設(shè)置了此項(xiàng)芍锚,系統(tǒng)依然會(huì)將你訪問(wèn)的接口代理到此處設(shè)置的服務(wù)上昔园,這對(duì)于一些老接口非常有用蔓榄,不用在此系統(tǒng)上并炮,將老接口在此系統(tǒng)上再定義一遍,當(dāng)然從文檔記錄上講甥郑,再定義一遍逃魄,作為接口的文檔記錄是可取的

header頭信息設(shè)置:

當(dāng)二次代理開啟時(shí),有些時(shí)候澜搅,我們需要將我們請(qǐng)求的header信息傳遞給二次代理的服務(wù)上伍俘,比如:用戶登錄后,需要將登錄的COOKIE傳遞給后端以方便后端驗(yàn)證登錄權(quán)限勉躺。

故需求一個(gè)功能來(lái)設(shè)置哪些header信息傳遞給后端癌瘾,默認(rèn)情況下,啟用黑名單項(xiàng)饵溅,將除了host 和 accept-encoding的其他header信息傳遞給后端妨退。

項(xiàng)目管理:


添加/修改項(xiàng)目



就目前的使用來(lái)看,已基本滿足了我 前后端分離開發(fā)時(shí)的數(shù)據(jù)模擬需求,如果各種有好的建議或意義歡迎給我指問(wèn)咬荷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末冠句,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子幸乒,更是在濱河造成了極大的恐慌懦底,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罕扎,死亡現(xiàn)場(chǎng)離奇詭異聚唐,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)壳影,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門拱层,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人宴咧,你說(shuō)我怎么就攤上這事根灯。” “怎么了掺栅?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵烙肺,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我氧卧,道長(zhǎng)桃笙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任沙绝,我火速辦了婚禮搏明,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘闪檬。我一直安慰自己星著,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布粗悯。 她就那樣靜靜地躺著虚循,像睡著了一般。 火紅的嫁衣襯著肌膚如雪样傍。 梳的紋絲不亂的頭發(fā)上横缔,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音衫哥,去河邊找鬼茎刚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛撤逢,可吹牛的內(nèi)容都是我干的膛锭。 我是一名探鬼主播捌斧,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼泉沾!你這毒婦竟也來(lái)了捞蚂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤跷究,失蹤者是張志新(化名)和其女友劉穎姓迅,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俊马,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丁存,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了柴我。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片解寝。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖艘儒,靈堂內(nèi)的尸體忽然破棺而出聋伦,到底是詐尸還是另有隱情,我是刑警寧澤界睁,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布觉增,位于F島的核電站,受9級(jí)特大地震影響翻斟,放射性物質(zhì)發(fā)生泄漏逾礁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一访惜、第九天 我趴在偏房一處隱蔽的房頂上張望嘹履。 院中可真熱鬧,春花似錦债热、人聲如沸砾嫉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)焰枢。三九已至蚓峦,卻和暖如春舌剂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背暑椰。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工霍转, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人一汽。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓避消,卻偏偏與公主長(zhǎng)得像低滩,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子岩喷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容