不用再等後端的接口啦!這個開源項目花 2 分鐘就能模擬出後端接口

本文做者:HelloGitHub-嘉文前端

這裏是 HelloGitHub 推出的《講解開源項目》系列,今天給你們帶來一款開源免費的模擬後端 API 的工具:mocojava

沒學事後端開發的也能快速上手這個開源項目,靚仔靚妹們沒必要再辛苦等待後端開發 API,從而有更多的時間逛 HelloGitHub 體驗更多有趣的開源項目。接下來本文將用帶你快速上手 moco 這個開源工具,讓你再也不卡在後端接口的開發進度上,一騎絕塵!git

項目地址:https://github.com/dreamhead/mocogithub

1、moco 有什麼用

我作前端或者客戶端開發,對我有什麼用?正則表達式

  1. 在後端 API 開發緩慢的時候,若是你想測試應用展現效果,就沒必要再等後端進度,使用 moco 輕鬆模擬後端 API。
  2. 在項目初期的時候,產品經理或者是客戶想看到你的應用展現,模擬好 API 就能夠開發前端,展現效果啦。

我作後端開發,對我有什麼用?json

  1. 企業級軟件通常都是多人開發,由於接口之間是互相依賴的,因此若是你依賴的服務進度緩慢或者是沒有在環境中運行,你就沒法對你開發的功能進行測試,進而不能及時交付項目,從而加班熬夜。
  2. 即便你所依賴的服務在環境中運行,可是所依賴的服務依舊會不斷測試和調優,這個過程也可能會致使你開發功能測試出現問題。一個穩定的測試接口,減小你的等待時間。

2、快速開始

2.1 準備工做

JDK 1.8+ (推薦1.8版本)

2.2 下載 jar 包

點擊此處下載 jar 包後端

2.3 API 配置文件

新建 hello.json 文件,寫入如下內容api

[{
	"description": "moco 快速開始示例",
	"request": {
		"uri": "/hello"
	},
	"response": {
		"text": "Hello GitHub"
	}
}]

目錄結構以下數組

├── hello.json                             // API 接口配置文件
├── moco-runner-1.1.0-standalone.jar       // 下載的模擬 API 的工具

2.4 運行項目

在該目錄下運行瀏覽器

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:設置配置文件路徑(剛剛新建的配置文件)

2.5 效果展現

在瀏覽器中訪問一下地址

localhost:9999/hello

效果如圖所示

3、詳細用法

剛剛的你應該十分輕鬆地模擬一個簡單的後端 API,是否是頗有成就感?可是你使用或者開發事後端 API 你就也許知道:一個合格的後端 API 不該該僅僅侷限如此。一個合格的後端 API 應該能包括:請求方法、請求 URL、請求參數、請求頭、請求體、返回狀態碼、返回提示信息、返回頭和返回體等內容。

如何使用 moco 這個開源項目模擬出一個合格的後端接口呢?接下來就帶你一步步瞭解詳細用法。

3.1 基本結構

[
  {
    "description": "moco 基本結構",
    "request": {
      "uri": "/hello",
      "method": "post"
    },
    "response": {
      "text": "Hello GitHub"
    }
	}
]
  • json 文件的最層是一個 [] 數組,裏面能夠封裝多個 API(示例只有一個 API)
  • 由於 json 配置文件不支持註釋,因此這個 API 的註釋你能夠寫到 description 裏面
  • request 能夠包含請求的全部內容
  • response 能夠包含返回的全部內容

3.2 模擬一個基本的 RESTful API

[{
	"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:請求 Cookies
  • json:請求體的一種類型(還有 froms 表單等類型)
  • response 返回值的 headersjsoncookies 也相似
  • latency 模擬服務器卡頓(由於模擬的後端 API 返回數據幾乎是瞬間的,這裏咱們讓其卡頓 2 秒)

測試

這裏咱們使用 GitHub 上面開源免費的 API 測試軟件 Postman 進行測試

(1)url、請求方法、請求頭和 Cookies

(2)請求體(json)

(3)測試效果

點擊 Send 發送,並在下方 response 查看測試效果

查看返回的請求頭

查看返回的 Cookies

查看全局 Cookies

3.3 附件下載

有時候咱們須要模擬文件下載,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 文件

3.4 輪詢數據

若是咱們刷新頁面想得到不一樣的內容 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
...

3.5 重定向

有時候咱們想重定向頁面 moco 如何實現呢?

[{
	"description": "moco 重定向",
	"request": {
		"uri": "/hello"
	},
	"redirectTo": "https://hellogithub.com"
}]

訪問 localhost:9999/hello 會自動重定向到 https://hellogithub.com

3.6 正則表達式

moco 還支持一些運算符,好比正則表達式。

[{
	"description": "moco 正則表達式",
	"request": {
		"uri": {
			"match": "/hello/\\w*"
		}
	},
	"response": {
		"text": "Hello GitHub"
	}
}]

能夠經過正則表達式匹配的連接訪問,好比

localhost:9999/hello/jarvan
localhost:9999/hello/bmft

3.7 使用模板

有的時候咱們的返回參數依賴於請求參數(好比編碼類型),這個時候咱們就能夠用 template 模板來實現,咱們能夠在模板中經過 req 來表示發送的請求 。

{
    "description": "moco 使用模板",
    "request": {
        "uri": "/hello",
      	"method": "post"
    },
    "response": {
        "text": {
            "template": "${req.method}"
        }
    }
}

返回的值是

{
  "text": "post"
}

4、最後

看到這裏,想必你已經瞭解開源項目 moco 的基本使用了,是否是以爲頗有意思?這裏給出一個小建議,若是想真正使用這個開源項目 moco,建議參考官方文檔去「實踐」,這是最快捷,最有效的使用開源項目的辦法。「實踐」就是鞏固的最佳方法,但願你能在實踐中體驗設計程序的快樂!

至此,感謝熱愛開源的小夥伴們的閱讀。**公衆號 HelloGitHub ** 會定時介紹 GitHub 上有趣的開源免費的項目,若是你對開源項目感興趣,那就關注咱們收到第一時間​的文章推送吧。

參考:

GitHub:項目官方文檔

開源中國:Moco 可輕鬆搭建的測試服務器

相關文章
相關標籤/搜索