1. 說一下背景
在日常開發(fā)或者測試工作中弟塞,經常會因為下游服務不可用或者不穩(wěn)定時,通過工具或者技術手段去模擬一個HTTP Server
我抠,或者模擬所需要的接口數(shù)據(jù)苇本。
這個時候,很多人腦海里菜拓,都會想到可以利用Mock
技術來解決瓣窄,
當說起Mock
,對于發(fā)纳鼎、測試來說俺夕,是老生常談的話題了,之前公眾號也分享過很多關于此類的技術文章贱鄙。市面上Mock
工具有很多劝贸,比如Charles
、Fiddler
逗宁,但這些雖然都能實現(xiàn)Mock
映九,但是在操作上相對來說還是比較麻煩,抓了包才能修改返回結果疙剑。并且對于一些復雜的開發(fā)測試場景氯迂,也很難得到滿足践叠。
今天就給大家推薦一款測試開發(fā)神器:Mockoon
, 它采用的是非侵入式,能夠實時修改返回結果嚼蚀。
2. Mockoon介紹
Mockoon
被官方稱為:一款在地運行模擬API最簡單禁灼,最快的解決方案。無需遠程部署轿曙,無需帳戶弄捕,并且是開源的。
它是利用Electron構建的导帝,可以在Windows(exe)守谓,Linux(deb,rpm您单,Appimage和Snap)和MacOS(dmg或brew)上使用斋荞。官網地址:mockoon.com
下載地址:
https://mockoon.com/#download
功能特點:
從官網中可以看出,Mockoon 是一個可以通過圖形化界面幫我們快速搭建 API 服務的工具虐秦,并且支持數(shù)據(jù)模擬平酿、路由解析、跨域訪問悦陋、HTTPS蜈彼、自定義延時、Docker 等等各種你想要的功能俺驶,同時支持支持 Windows幸逆、Mac、Linux暮现,頁面整體結構是這樣子的:
3. Mockoon基礎使用
Mockoon
布局还绘,和 PostMan
有異曲同工之妙啊。
比如送矩,在左側可以配置一個個請求列表蚕甥,點進去可以在右側配置詳情,比如配置是 GET
還是 POST
請求栋荸,path
是什么菇怀,Response Body
是什么,Response Headers
是什么晌块,另外還有一些規(guī)則和基礎設置爱沟。
另外在最上面我可以配置運行的 host
和 port
,然后左上角還有一個運行按鈕匆背,一點就相當于啟動了 Server
了呼伸,啟動之后按鈕就會變成紅色,再按一下就會停止,比如這里我就配置了運行在本地 3000 端口:
然后可以根據(jù)自定義需求括享,修改響應Body:
{
"Templating example": "For more information about templating, click the blue 'i' above this editor",
"users": [
{{# repeat (queryParam 'total' '10') }}
{
"userId": "{{ faker 'random.number' min=10000 max=100000 }}",
"firstname": "{{ faker 'name.firstName' }}",
"lastname": "{{ faker 'name.lastName' }}",
"friends": [
{{# repeat (faker 'random.number' 5) }}
{
"id": "{{ faker 'random.uuid' }}"
}
{{/ repeat }}
]
},
{{/ repeat }}
],
"total": "{{queryParam 'total' '10'}}"
}
然后接下來配置跨域訪問搂根,就加一個 Response Header(根據(jù)需要,可選):
Access-Control-Allow-Origin: '*'
然后點擊左上角的運行按鈕就成了铃辖。
Mockoon
還提供了快捷訪問的功能剩愧,接著點右上角的打開按鈕:
瀏覽器就打開了,然后數(shù)據(jù)就看到了:
這樣娇斩,我們通過非常簡單的可視化配置就完成了 API Server 的搭建仁卷,熟練的話一分鐘就完成了。
4. Mockoon進階使用
有時犬第,您可能只需要模擬API的一部分锦积,然后將其余部分轉發(fā)到現(xiàn)有的REST服務器。幸運的是歉嗓,您可以使用Mockoon
做到這一點
通過單擊右上角的齒輪來打開環(huán)境設置:
啟用代理模式丰介,然后輸入要將轉發(fā)到的服務器URL。在環(huán)境名稱的右側應出現(xiàn)一個小的盾牌圖標鉴分,指示已啟用代理模式:
Mockoon
將攔截所有已定義的路由基矮,并將任何其他請求轉發(fā)到代理模式設置中定義的服務器。
瀏覽器打開: http://0.0.0.0:3000/api/aitest
地址即可拿到結果冠场,body中隨時修改內容都會立即生效,不需要再次啟動任何東西
打開瀏覽器訪問:
這樣一個基本的Mock
就實現(xiàn)了本砰,下面我們來說下使用LightProxy
工具做代理轉發(fā)
5. LightProxy工具
5.1 簡介
LightProxy
是 阿里巴巴IFE 團隊開發(fā)的一款基于 Electron
和 whistle
的開源桌面代理軟件碴裙,可以自動完成證書安裝和代理設置,通過 HTTP 代理使用規(guī)則轉發(fā)点额、修改每一個請求和響應的內容舔株。
項目地址:
https://github.com/alibaba/lightproxy
5.2 它能幫你做什么:
- 抓包,包括無線場景抓包
- 實時 hosts 綁定
- 按規(guī)則轉發(fā)資源
- mock 接口还棱,頁面等
- 修改請求和響應內容载慈,例如在頁面中插入 script ,修改返回頭等
一句話總結:LightProxy
是一款全能代理抓包工具珍手,通過基于 whistle
的代理能力办铡,能夠任意修改開發(fā)環(huán)境中的 request 和 response ,夠讓你隨心所欲的掌控自己當前的開發(fā)或者測試環(huán)境。
本地開發(fā):
git clone https://github.com/alibaba/lightproxy
cd lightproxy
yarn run install-deps
yarn run dev
下載安裝:
Windows下載: https://gw.alipayobjects.com/os/LightProxy/LightProxy-Setup.exe
Mac下載: https://gw.alipayobjects.com/os/LightProxy/LightProxy.dmg
5.3 配置
以PC端轉發(fā)為例:
1琳要、打開LightProxy
工具寡具,編輯時,會自動提生成安裝證書命令稚补,直接復制在命令行中執(zhí)行即可童叠。
2、新建代理轉發(fā)規(guī)則配置课幕,這就相當于將該域名所有請求轉到我本地配置的mock工具上
上述兩條規(guī)則解釋:
- 1厦坛、訪問
https://www.cnblogs.com/jinjiangongzuoshi/
請求時五垮,自動轉發(fā)到http://localhost:3000/users
接口上。 - 2杜秸、將
www.cnblogs.com
域名所有請求轉發(fā)到localhost:3000
上
同理放仗,此時如果訪問https://www.cnblogs.com/users
,也同樣會轉發(fā)到localhost:3000
上亩歹。
這樣無論是在手機端或pc端 訪問指定域名下所有請求都會轉向到對應mock工具中匙监,然后再根據(jù)路徑和請求類型獲取配置的返回結果。
更多例子
1小作、例如當我們需要在線上頁面中加入一個 DIV 亭姥,如果沒有代理我們需要依賴后端一套類似的預發(fā)環(huán)境,而有了 LightProxy 我們只需要使用:
https://www.alibaba.com/ htmlPrepend://(<div>test</div>)
就可以在一個線上的頁面中插入一個 div 顾稀。
2达罗、同樣的,我們可以直接把頁面中的一個 JS 轉發(fā)到本地一個開發(fā)中的文件
https://www.google.com/xx.js file:///User/xxx/xxx.js
3静秆、當后端缺少 CORS 頭時粮揉,我們可以直接給它先加上 CORS 頭
https://xxx.com/xx.json resCors:// # 給響應的請求增加 CORS header
總體來說:LightProxy
能夠讓開發(fā)人員或者測試人員完全掌控自己的開發(fā)測試環(huán)境,用極低的成本定制自己的開發(fā)環(huán)境抚笔,而不是總是在等待依賴方按照自己的需求提供相應的環(huán)境扶认。
甚至于,你可以自己用 NodeJS 書寫針對某個規(guī)則的響應
更詳細使用可參考:
https://github.com/alibaba/lightproxy/issues/19
6. 小結
除此之外殊橙,Mockoon
還支持命令行辐宾,比如通過 mockoon-cli
就可以快速創(chuàng)建一個 API Server,如圖所示:
命令行的使用和安裝可以參考:
https://github.com/mockoon/cli#installation
另外無論是Mockoon
還是LightProxy
膨蛮,還有太多功能叠纹,比如 HTTPS、多請求處理敞葛、日志誉察、路由、模板配置這里就不再一一敘述了惹谐,用到的時候大家查要文檔就好啦
https://mockoon.com/docs/latest/gui-cheat-sheet/
https://mockoon.com/docs/latest/multiple-responses/
https://mockoon.com/docs/latest/requests-logging/
https://mockoon.com/docs/latest/cors/
https://mockoon.com/tutorials/
以上便是今天的分享持偏,更多功能期待你的探索!