作者:dxj20101118 | 来源:互联网 | 2023-07-25 10:53
moco可以用来模拟http、https、socket请求,这里介绍下最常用的http请求。
大家也可以查看moco关于http请求的官方文档
一、json文件基本格式
moco使用json文件配置请求的基本格式为
[
{
请求1
},
{
请求2
},
等等
]
每个请求需要包含request和response,description可选。
二、常用关键字
2.1 Description描述
在所有JSON API中,您可以使用description来描述此会话的内容。它只是用作注释,在运行时将被忽略。
[
{
"description": "这里用来描述会话的内容,只是注释,运行时忽略",
"response": {
"text": "foo"
}
}
]
2.2 Request请求部分
moco提供了很多关键字,用于配置request部分的内容。
关键字 |
描述 |
格式 |
---|
text |
配置请求内容 |
字符串 |
file |
若响应内容太多,可以方法文件中,配置存放请求内容的文件名 |
字符串 |
uri |
请求路径 |
字符串 |
queries |
用于get请求传递参数 |
json串 |
method |
请求方式,包括get/post/put/delete等 |
字符串 |
version |
http请求版本号,比如HTTP/1.0 |
字符串 |
headers |
请求头 |
json串 |
COOKIEs |
COOKIE信息 |
json串 |
forms |
用于post请求传递参数 |
json串 |
match |
用于配置符合正则表达式的请求 |
字符串 |
json |
get请求参数为json串 |
|
startsWith |
以…开头 |
字符串 |
endsWith |
以…结尾 |
字符串 |
contain |
包含…内容 |
字符串 |
exist |
用于判断…请求信息是否存在 |
字符串 |
2.3 Response响应部分
关键字 |
描述 |
格式 |
---|
text |
配置响应内容 |
字符串 |
file |
若响应内容太多,可以方法文件中,配置存放响应内容的文件名 |
字符串 |
charset |
设置文件编码 |
字符串 |
status |
状态码 |
int |
version |
http响应版本号,默认情况下,http响应版本号应该是http请求版本号,但是你也可以自行设置响应版本号 |
字符串 |
headers |
响应头 |
json串 |
proxy |
我们也可以使用指定的URL进行响应,就像代理一样。 |
|
failover |
除了基本功能外,代理还支持故障转移,这意味着如果远程服务器暂时不可用,服务器将从本地配置恢复。 |
|
playback |
回放 |
|
redirectTo |
重定向 |
|
COOKIEs |
COOKIE信息 |
json串 |
json |
responese为json串 |
|
三、举例
例1:get请求带参数
[{
"description": "模拟一个没有参数的get请求",
"request": {
"uri": "/getdemo",
"method": "get"
},
"response": {
"headers": {
"Content-Type": "text/html;charset=gbk"
},
"text": "这是一个没有参数的get请求"
}
},
{
"description": "模拟一个带参数的get请求",
"request": {
"uri": "/getwithparam",
"method": "get",
"queries": {
"name": "zhangsan",
"age": "18"
}
},
"response": {
"headers": {
"Content-Type": "text/html;charset=gbk"
},
"text": "我叫张三"
}
}
]
例2:post请求带参数
[{
"description": "这是一个没有参数的post请求",
"request": {
"uri": "/postdemo",
"method": "post"
},
"response": {
"headers": {
"Content-Type": "text/html;charset=gbk"
},
"text": "这是mock的post请求"
}
},
{
"description": "这是一个带参数的post请求",
"request": {
"uri": "/postwithparam",
"method": "post",
"forms": {
"name": "zhangsan",
"age": "18"
}
},
"response": {
"headers": {
"Content-Type": "text/html;charset=gbk"
},
"text": "我是张三!"
}
}
]
不带参数的post请求结果
带参数的post请求结果
例3:请求/响应带COOKIEs信息
[
{
"description": "这是一个带COOKIEs信息的get请求",
"request": {
"uri": "/get/withCOOKIEs",
"method": "get",
"COOKIEs": {
"login": "true"
}
},
"response": {
"headers": {
"Content-Type": "text/html;charset=gbk"
},
"text": "这是一个需要携带COOKIEs信息才能访问的get请求"
}
}, {
"description": "这是一个带COOKIEs信息的post请求",
"request": {
"uri": "/post/withCOOKIEs",
"method": "post",
"COOKIEs": {
"login": "true"
},
"json": {
"name": "zhangsan",
"age": "18"
}
},
"response": {
"headers": {
"Content-Type": "text/html;charset=gbk"
},
"status": 200,
"json": {
"zhangsan": "success",
"status": "1"
}
}
},
{
"description": "这是一个会返回COOKIEs信息的get请求",
"request": {
"uri": "/getCOOKIEs",
"method": "get"
},
"response": {
"headers": {
"Content-Type": "text/html;charset=gbk"
},
"COOKIEs": {
"login": "true"
},
"text": "恭喜你获得COOKIEs信息"
}
}
]
带COOKIEs信息的get请求,执行结果
带COOKIEs信息的post请求,执行结果
返回COOKIEs信息的get请求,执行结果
例4:请求/响应带headers信息
[{
"description": "这是一个带header信息的post请求",
"request": {
"uri": "/post/withHeaders",
"method": "post",
"headers": {
"content-type": "application/json"
},
"json": {
"name": "zhangsan",
"sex": "male"
}
},
"response": {
"json": {
"success": "true",
"status": "1"
}
}
}
]
执行结果如下:
例5:重定向
[{
"description": "重定向到百度",
"request": {
"uri": "/redirect"
},
"redirectTo": "http://www.baidu.com"
},
{
"description": "重定向到一个自己的url上",
"request": {
"uri": "/redirect/topath"
},
"redirectTo": "/redirect/new"
},
{
"description": "这是一个被重定向到的请求",
"request": {
"uri": "/redirect/new"
},
"response": {
"headers": {
"Content-Type": "text/html;charset=gbk"
},
"text": "重定向到new请求啦"
}
}
]
输入localhost:8888/redirect,重定向到了百度,结果如下
输入http://localhost:8888/redirect/topath,重定向到自己写的url,结果如下