-
-
-
-
轻量级接口模拟工具moco使用
moco框架
moco框架介绍
mock用来模拟接口的,本次学习mock用的是moco框架,moco框架是github上的一个开源项目,可以模拟一些http,https,Socket协议
moco下载地址:moco下载地址
- 我们选择
moco-runner/
选择版本号-->0.12.0/
选择moco的jar文件(一般是最大的那个)-->moco-runner-0.12.0-standalone.jar
- Maven框架的依赖地址:
- 我们选择
<!-- https://mvnrepository.com/artifact/com.github.dreamhead/moco-runner -->
<dependency>
<groupId>com.github.dreamhead</groupId>
<artifactId>moco-runner</artifactId>
<version>0.12.0</version>
</dependency>
我们的第一个Demo
- 我们先随便创建一个文件夹,目前用不用idea都可以
- 把我们刚才下载的Demo创建到目录下
- 创建我们的启动配置文件json
打开我们的命令行操作界面,然后进入我们的文件根目录下,执行命令:
java -jar moco-runner-0.12.0-standalone.jar http -p 8888 -c 配置的json文件
命令详解:
java -jar
是启动jar文件的标准启动命令,如果失败,可能是电脑的jdk环境变量问题,请自行百度进行检查是否正确- 参数:
http
表示我们请求的方式 - 参数:
-p 8888
是指我们的启动端口参数,后面紧跟要启动的端口号 - 参数:
-c json配置文件
此参数主要指定我们的配置文件,可以使用绝对路径或者强制路径去指定我们的额moco的配置文件的位置
- 配置我们的json文件,如果复制过去,一定要删除注释
[
{
"description": "这个是我们第一个的mock例子",
"request": {
"uri": "/demo"
},
"response": {
"text": "I name is mock",
"headers": {
"Content-Type": "text/html;charset=gbk"
}
}
}
]
- 在浏览器输入:
http://localhost:8888/demo
或者http://127.0.0.1:8888/demo
Moco框架的http协议的get方法的Mock实现
- 照例我们呢还是创建一个json文件
[
{
"description": "这个是我们第一个没有参数get请求",
"request": {
"uri": "/getDemo",
"method": "get"
},
"response": {
"text": "这是我们第一个没有参数的get请求",
"headers": {
"Content-Type": "text/html;charset=gbk"
}
}
},
{
"description": "模拟一个带参数的get请求",
"request": {
"uri": "/getWithParam",
"method": "get",
"queries": {
"name": "胡汉三",
"age": "18"
}
},
"response": {
"text": "我胡汉三又回来了!!!",
"headers": {
"Content-Type": "text/html;charset=gbk"
}
}
}
]
- 然后启动我们的moco
- 访问对应的路径返回我们的参数
Moco框架的http协议的post方法的Mock实现
这次我们依然是创建一个json文件
- 这里有一个问题一定要注意!注意!!注意!!!
- 那就是我们post请求的参数一定不能使用get带参请求的
queries
去请求,否则会报400参数不合法 - 我们可以先使用
forms
去请求,也就是我们的基本的form表单数据类型
[
{
"description": "模拟一个post请求",
"request": {
"uri": "/postDemo",
"method": "post"
},
"response": {
"text": "这个是我们第一个mock的post请求",
"headers": {
"Content-Type": "text/html;charset=gbk"
}
}
},
{
"description": "这个是我们一个带参数的post请求",
"request": {
"uri": "/postWithParam",
"method": "post",
"forms": {
"name": "胡汉三",
"age": "18",
"sex": "man"
}
},
"response": {
"text": "我胡汉三带着参数来了!!!",
"headers": {
"Content-Type": "text/html;charset=gbk"
}
}
}
]
- 然后换文件启动moco
- 然后我们要换工具请求了,浏览器已经满足不了我们了,我们使用Postman
我们如何在Moco框架中增加Cookies
在Moco框架中携带Cookies发送get请求
- 增加json文件
[
{
"description": "这是一个带cookies信息的get请求",
"request": {
"uri": "/getDemo/Cookies",
"method": "get",
"cookies": {
"login": "true"
}
},
"response": {
"text": "这个是一个必须带cookies信息才可以访问的get请求",
"headers": {
"Content-Type": "text/html;charset=gbk"
}
}
}
]
- 使用Postman发送请求并添加cookies信息
在Moco框架中携带Cookies发送post请求
- 添加一个json文件
[
{
"description": "这是一个带cookies信息的get请求",
"request": {
"uri": "/getDemo/Cookies",
"method": "get",
"cookies": {
"login": "true"
}
},
"response": {
"text": "这个是一个必须带cookies信息才可以访问的get请求",
"headers": {
"Content-Type": "text/html;charset=gbk"
}
}
},
{
"description": "这是一个带cookies信息的post请求",
"request": {
"uri": "/postDemo/Cookies",
"method": "post",
"cookies": {
"login": "true"
},
"json": {
"name": "胡汉三",
"sex": "man"
}
},
"response": {
"status": 200,
"json": {
"code": "success",
"msg": "胡汉三,请求成功了"
}
}
}
]
- 使用Postman发送请求,并添加cookies信息,添加json数据
- 此时我们一定要注意,我们的请求中有中文,一定要设置编码,编码格式要和我们的json文件的格式保持一致
- 由此可以得出结论,我们的请求格式归根结底第受限于我们json文件的编码格式
- 我们可以在Postman中的henders中对
Content-Type
的值设置为:application/json;charset=utf8
带有Header信息的请求
- 创建json文件
[
{
"description": "这个是一个带header信息的post请求",
"request": {
"uri": "/postHeader",
"method": "post",
"headers": {
"content-type": "application/json;charset=utf8"
},
"json": {
"name": "李四",
"sex": "女"
}
},
"response": {
"json": {
"code": "success",
"msg": "李四,请求成功了"
}
}
}
]
- 使用postman发送请求
实现请求重定向
Demo01
- 创建json文件,我们重定向到百度
[
{
"description": "这个是一个重定向到百度的demo",
"request": {
"uri": "/redirect"
},
"redirectTo": "http://www.baidu.com"
}
]
- 使用浏览器进行验证
Demo2
- 创建json文件
[
{
"description": "重定向到自己的一个网页",
"request": {
"uri": "/redirect/toPath"
},
"redirectTo": "/redirect/new"
},
{
"description": "这个是被上面重定向的请求",
"request": {
"uri": "/redirect/new"
},
"response": {
"text": "重定向成功了",
"headers": {
"Content-Type": "text/html;charset=gbk"
}
}
}
]
- 使用浏览器访问
- 使用postman访问