最近想要找一款可以提供假接口数据的软件,以便在开发时提供给前端和移动端使用,这样前端的任务就可以和后端一起开发,甚至可以提前开发。正好mountebank进入了视线,这里记录下学习过程,并准备在工作中使用。
安装
1. node安装
node的版本需要在4以上
npm install -g mountebank
运行
mb
加载配置文件启动
mb start --configfile ./imposters.ejs
imposters.ejs是配置文件,用来配置模拟的请求的返回值。
注意:配置文件更新后,需需要重启命令,暂时未找到热更新方法
2. 使用docker-compose
安装docker, 新建一个目录创建docker-compose.yaml文件,添加一下内容
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
}
}
]
}]
}]
}
启动命令如上节,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
出现相似的结果则说明配置正确。
配置说明
这里对imposter的主要配置项进行简单的说明,让大家对配置有一个整体的了解。
-
port
该imposter的监听端口。目前发现两个imposter的监听端口不能重复,否则会有一个imposter的配置加载不上
-
protocol
协议,mountebank支持多种协议包括:http, https, tcp, smtp。
-
stubs
模拟请求响应(response)的配置集合。该配置包含了模拟请求的接收条件和响应结果。
-
predicates
请求断言。用来断言请求是否被改stub接收。
-
responses
请求相应。断言判断成功后对请求的响应结果。
-
网友评论