本文做者:HelloGitHub-嘉文前端
這裏是 HelloGitHub 推出的《講解開源項目》系列,今天給你們帶來一款開源免費的模擬後端 API 的工具:mocojava
沒學事後端開發的也能快速上手這個開源項目,靚仔靚妹們沒必要再辛苦等待後端開發 API,從而有更多的時間逛 HelloGitHub 體驗更多有趣的開源項目。接下來本文將用帶你快速上手 moco 這個開源工具,讓你再也不卡在後端接口的開發進度上,一騎絕塵!git
項目地址:https://github.com/dreamhead/mocogithub
我作前端或者客戶端開發,對我有什麼用?正則表達式
我作後端開發,對我有什麼用?json
JDK 1.8+ (推薦1.8版本)
新建 hello.json
文件,寫入如下內容api
[{ "description": "moco 快速開始示例", "request": { "uri": "/hello" }, "response": { "text": "Hello GitHub" } }]
目錄結構以下數組
├── hello.json // API 接口配置文件 ├── moco-runner-1.1.0-standalone.jar // 下載的模擬 API 的工具
在該目錄下運行瀏覽器
java -jar moco-runner-1.1.0-standalone.jar http -p 9999 -c hello.json
moco-runner-1.1.0-standalone.jar:運行程序的路徑(剛剛下載的包的路徑)
http:選擇服務類型(有 http、https、socket)
-p 9999:設置服務端口 9999
-c hello.json:設置配置文件路徑(剛剛新建的配置文件)
在瀏覽器中訪問一下地址
localhost:9999/hello
效果如圖所示
剛剛的你應該十分輕鬆地模擬一個簡單的後端 API,是否是頗有成就感?可是你使用或者開發事後端 API 你就也許知道:一個合格的後端 API 不該該僅僅侷限如此。一個合格的後端 API 應該能包括:請求方法、請求 URL、請求參數、請求頭、請求體、返回狀態碼、返回提示信息、返回頭和返回體等內容。
如何使用 moco 這個開源項目模擬出一個合格的後端接口呢?接下來就帶你一步步瞭解詳細用法。
[ { "description": "moco 基本結構", "request": { "uri": "/hello", "method": "post" }, "response": { "text": "Hello GitHub" } } ]
[]
數組,裏面能夠封裝多個 API(示例只有一個 API)description
裏面request
能夠包含請求的全部內容response
能夠包含返回的全部內容[{ "description": "模擬一個基本的 RESTful API", "request": { "uri": "/hello2", "method": "post", "headers": { "Content-Type": "application/json", "Accept": "application/json", "token": "header.playload.signature", "Accept-Charset": "utf8" }, "cookies": { "login": "true" }, "json": { "name": "zhangsan", "age": 13 } }, "response": { "json": { "message": "測試成功" }, "latency": { "duration": 2, "unit": "second" }, "headers": { "Content-Type": "application/json", "token": "new-header.new-playload.new-signature" }, "cookies": { "login": { "value": "true", "domain": "localhost", "secure": "true", "httpOnly": "true", "path": "/" } } } }]
method
:請求方法headers
:請求頭cookies
:請求 Cookiesjson
:請求體的一種類型(還有 froms
表單等類型)response
返回值的 headers
、json
、cookies
也相似latency
模擬服務器卡頓(由於模擬的後端 API 返回數據幾乎是瞬間的,這裏咱們讓其卡頓 2 秒)測試
這裏咱們使用 GitHub 上面開源免費的 API 測試軟件 Postman 進行測試
(1)url、請求方法、請求頭和 Cookies
(2)請求體(json)
(3)測試效果
點擊 Send 發送,並在下方 response 查看測試效果
查看返回的請求頭
查看返回的 Cookies
查看全局 Cookies
有時候咱們須要模擬文件下載,moco 如何實現呢?
[{ "description": "moco 附件下載", "request": { "uri": "/hello" }, "response": { "attachment":{ "filename": "demo.txt", "file": "demo.txt" } } }]
文件目錄
├── hello.json // API 接口配置文件 ├── moco-runner-1.1.0-standalone.jar // 模擬 API 的工具 ├── demo.txt // 要下載的文件,這裏可使用相對路徑
localhost:9999/hello
便可下載 demo.txt
文件
若是咱們刷新頁面想得到不一樣的內容 moco 如何實現呢?
[{ "description": "moco 輪詢數據", "request": { "uri": "/hello" }, "response": { "cycle": [{ "text": "hello 1" }, { "text": "hello 2" }, { "text": "hello 3" } ] } }]
訪問 localhost:9999/hello
會依次獲得以下內容
hello 1 hello 2 hello 3 hello 1 hello 2 ...
有時候咱們想重定向頁面 moco 如何實現呢?
[{ "description": "moco 重定向", "request": { "uri": "/hello" }, "redirectTo": "https://hellogithub.com" }]
訪問 localhost:9999/hello
會自動重定向到 https://hellogithub.com
moco 還支持一些運算符,好比正則表達式。
[{ "description": "moco 正則表達式", "request": { "uri": { "match": "/hello/\\w*" } }, "response": { "text": "Hello GitHub" } }]
能夠經過正則表達式匹配的連接訪問,好比
localhost:9999/hello/jarvan localhost:9999/hello/bmft
有的時候咱們的返回參數依賴於請求參數(好比編碼類型),這個時候咱們就能夠用 template 模板來實現,咱們能夠在模板中經過 req
來表示發送的請求 。
{ "description": "moco 使用模板", "request": { "uri": "/hello", "method": "post" }, "response": { "text": { "template": "${req.method}" } } }
返回的值是
{ "text": "post" }
看到這裏,想必你已經瞭解開源項目 moco 的基本使用了,是否是以爲頗有意思?這裏給出一個小建議,若是想真正使用這個開源項目 moco,建議參考官方文檔去「實踐」,這是最快捷,最有效的使用開源項目的辦法。「實踐」就是鞏固的最佳方法,但願你能在實踐中體驗設計程序的快樂!
至此,感謝熱愛開源的小夥伴們的閱讀。**公衆號 HelloGitHub ** 會定時介紹 GitHub 上有趣的開源免費的項目,若是你對開源項目感興趣,那就關注咱們收到第一時間的文章推送吧。
參考: