學習Moco接口框架

搜狗測試2019-06-22 13:10:44

 

Moco能做什麼?

可以讓我們快速搭建起一套接口服務,這樣做的好處是:

1、開發沒有開發完成時,我們就有一套可供調試代碼的環境;

2、前端同學也可以使用這套環境來聯調;

3、可以與開發同學一起把接口入參、返回值等規範在開發前就一起定好。

如果中間接口有修改,Moco修改也非常的方便。


 

如何獲得Moco框架?

Moco框架是Github上的一個開源項目,可以模擬一些http、https、socket協議。

jar包下載地址:

http://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.11.0/

選擇下圖中圈出的jar包,進行下載。

 


如何啟動Moco,以及Demo示例

啟動命令如下:

java -jar ./moco-runner-0.11.0-standalone.jar http -p 0089 -c startup1.json// java -jar jar包名 協議類型 -p 端口號 -c json配置文件(一定是路徑,可以是相對路徑,也可以是絕對路徑,相對於使用java命令目錄下)

在IDEA中創建目錄moco,把下載好的jar包 moco-runner-0.11.0-standalone.jar 放在目錄下,創建一個json的demo文件 startup1.json。

新建一個json文件:startup1.json,代碼如下:

[{"description":"這是一個moco例子","request":{"uri":"/demo"},"response":{"text":"moco demo"}}

description:程序不會識別,是寫給我們自己看的。

request:是請求,裏面的 uri 是我們訪問應用的時候拼接在端口後面的路徑。

response:是響應。

執行命令:

java -jar ./moco-runner-0.11.0-standalone.jar http -p 0089 -c startup1.json

啟動成功

瀏覽器訪問正確的url,返回信息如下:


 


Moco框架的http協議Get方法的Mock實現

1. 模擬一個不帶參數的get請求

uri:訪問路徑;

method:標識訪問方法。

[{"description":"不帶參數get請求","request":{"uri":"/getdemo","method":"get"},"response":{"text":"不帶參數的get請求"}}]

2. 模擬一個帶參數的get請求

[{"description":"帶參數get請求","request":{"uri":"/getwithparam","method":"get","queries":{"name":"小小","sex":"women"}},"response":{"text":"xiao xiao"}}]

瀏覽器訪問,返回結果:

注意:如果moco模擬接口返回中文如果出現亂碼,可以在response中添加設置編碼格式為“GBK”,添加代碼如下:

"essay-headers":{"Content-Type":"text/html;charset=gbk"}

 


Moco框架的POST方法的Mock實現


在moco中配置post請求,模擬一個post請求。

[{"description":"模擬一個post請求","request":{"uri":"/postdemo","method":"post"},"response":{"text":"這是我的第一個mock的post請求,無參","essay-headers":{"Content-Type":"text/html;charset=gbk"}}]

實際應用中,大部分的post請求都是帶參數的。

[{"description":"這是一個帶參數的post請求","request":{"uri":"/postwithparam","method":"post","forms":{"name":"xiaoxiao","sex":"women"}},"response":{"text":"xiaoxiao"}}]

post請求不能用瀏覽器訪問,瀏覽器中的方法只能是get的,post接口的調用需要藉助工具,這裏可以使用postman進行查看。


注意:

post的傳參和get不一樣,get裏面用的 :

"queries": {

"name": "xiaoxiao",

"sex": "woman"

}

但是 post 是用的 :

"forms":{

"name":"xiaoxiao",

"sex":"woman"

}

當然也可以用json格式,後續會介紹到:

"json": {

"name": "xiaoxiao",

"age": "18"

}


 

Moco框架中如何加入Cookies

帶cookie信息的get請求。

{"description":"這是一個帶cookies信息的get請求","request":{"uri":"/get/with/cookies","method":"get","cookies":{"login":"true"}},"response":{"text":"這是一個需要攜帶cookies信息才能訪問的get請求"}}

打開postman,添加cookie信息:login=true; path=/get/with/cookies; domain=localhost;

帶cookie信息的post請求,仍然帶着數據訪問,請求數據和返回數據均以json格式,返回狀態碼200。

[{"description":"這是一個帶cookies信息的post請求","request":{"uri":"/post/with/cookies","method":"post","cookies":{"login":"true"},"json":{"name":"xiaoxiao","age":"18"}},"response":{"status":200,"json":{"xiaoxiao":"success","status":"1"}}}]

postman發送json請求:

1. 選擇post請求方式, 同時將essay-header的content-type設置為application/json。

2. 設置body的編碼方式為raw,application/json, raw是發送純文本,不包含任何空格的編碼方式。


 

Moco框架中如何加入Header信息

GET和POST請求都一致,帶essay-header信息的post請求,訪問的時候加上請求頭信息。

[{"description":"這是一個帶essay-header信息的post請求","request":{"uri":"/post/with/essay-headers","method":"post","essay-headers":{"content-type":"application/json"},"json":{"name":"xiaoxiao","sex":"woman"}},"response":{"json":{"xiaoxiao":"success","status":"1"}}}]


 

Moco框架中如何進行重定向

redirect重定向跳轉傳值。

[{"description":"重定向到搜狗","request":{"uri":"/redirect"},"redirectTo":"http://123.sogou.com"},{"description":"重定向到一個自制的網頁上","request":{"uri":"/redirect/topath"},"redirectTo":"/redirect/new"},{"description":"這是被重定向到的請求","request":{"uri":"/redirect/new"},"response":{"text":"重定向成功啦"}}]

第一個訪問 http://localhost:1018/redirect 跳轉到搜狗;

第二個訪問 http://localhost:1018/redirect/topath 返回重定向成功啦”就代表重定向成功。



https://hk.wxwenku.com/d/200971581