moco可以用来模拟http、https、socket请求,这里介绍下最常用的http请求。
大家也可以查看moco关于http请求的官方文档
moco使用json文件配置请求的基本格式为
[
{
请求1
},
{
请求2
},
等等
]
每个请求需要包含request和response,description可选。
在所有JSON API中,您可以使用description来描述此会话的内容。它只是用作注释,在运行时将被忽略。
[
{
"description": "这里用来描述会话的内容,只是注释,运行时忽略",
"response": {
"text": "foo"
}
}
]
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 | 用于判断…请求信息是否存在 | 字符串 |
关键字 | 描述 | 格式 |
---|---|---|
text | 配置响应内容 | 字符串 |
file | 若响应内容太多,可以方法文件中,配置存放响应内容的文件名 | 字符串 |
charset | 设置文件编码 | 字符串 |
status | 状态码 | int |
version | http响应版本号,默认情况下,http响应版本号应该是http请求版本号,但是你也可以自行设置响应版本号 | 字符串 |
headers | 响应头 | json串 |
proxy | 我们也可以使用指定的URL进行响应,就像代理一样。 | |
failover | 除了基本功能外,代理还支持故障转移,这意味着如果远程服务器暂时不可用,服务器将从本地配置恢复。 | |
playback | 回放 | |
redirectTo | 重定向 | |
cookies | cookie信息 | json串 |
json | responese为json串 |
[{
"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": "我叫张三"
}
}
]
[{
"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": "我是张三!"
}
}
]
[
{
"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信息的post请求,执行结果
[{
"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"
}
}
}
]
[{
"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请求啦"
}
}
]