最近想要找一款可以提供假接口數(shù)據(jù)的軟件,以便在開發(fā)時提供給前端和移動端使用,這樣前端的任務就可以和后端一起開發(fā),甚至可以提前開發(fā)。正好mountebank進入了視線,這里記錄下學習過程,并準備在工作中使用。
安裝
1. node安裝
node的版本需要在4以上
npm install -g mountebank
運行
mb
加載配置文件啟動
mb start --configfile ./imposters.ejs
imposters.ejs是配置文件,用來配置模擬的請求的返回值。
注意:配置文件更新后,需需要重啟命令,暫時未找到熱更新方法
2. 使用docker-compose
安裝docker, 新建一個目錄創(chuàng)建docker-compose.yaml文件,添加一下內(nèi)容
version: "2"
services:
mountebank:
image: expert360/mountebank
volumes:
- ./imposters/:/imposters
ports:
- 2525:2525
- 4545:4545
- 4646:4646
- 5555:5555
- 52602:52602
entrypoint:
- mb
- start
- --configfile
- /imposters/imposters.ejs
- --allowInjection
說明:
- volumes : 掛載目錄,./imposters 當前目錄的imposters映射到容器里的/imposters
- ports : 端口映射
啟動:
docker-compose up
注意:修改了mountebank的文件必須重啟容器,目前沒有找到熱加載的方法
模擬請求
官方示例
imposters.ejs
{
"port": 4545,
"protocol": "http",
"stubs": [{
"responses": [
{ "is": { "statusCode": 400 }}
],
"predicates": [{
"and": [
{
"equals": {
"path": "/test",
"method": "POST",
"headers": { "Content-Type": "application/json" }
}
},
{
"not": {
"contains": { "body": "requiredField" },
"caseSensitive": true
}
}
]
}]
}]
}
啟動命令如上節(jié),mb start --configfile ./imposters.ejs。
模擬請求1
請求
curl -i -X POST -H 'Content-Type: application/json' http://localhost:4545/test --data '{"optionalField": true}'
結果
HTTP/1.1 400 Bad Request
Connection: close
Date: Wed, 28 Feb 2018 08:02:47 GMT
Transfer-Encoding: chunked
模擬請求2
請求
curl -i -X POST http://localhost:4545/test --data '{"optionalField": true}'
結果
HTTP/1.1 200 OK
Connection: close
Date: Wed, 28 Feb 2018 08:02:55 GMT
Transfer-Encoding: chunked
出現(xiàn)相似的結果則說明配置正確。
配置說明
這里對imposter的主要配置項進行簡單的說明,讓大家對配置有一個整體的了解。
-
port
該imposter的監(jiān)聽端口。目前發(fā)現(xiàn)兩個imposter的監(jiān)聽端口不能重復,否則會有一個imposter的配置加載不上
-
protocol
協(xié)議,mountebank支持多種協(xié)議包括:http, https, tcp, smtp。
-
stubs
模擬請求響應(response)的配置集合。該配置包含了模擬請求的接收條件和響應結果。
-
predicates
請求斷言。用來斷言請求是否被改stub接收。
-
responses
請求相應。斷言判斷成功后對請求的響應結果。
-