使用moco mock http请求

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请求结果
使用moco mock http请求_第1张图片

使用moco mock http请求_第2张图片
带参数的post请求结果
使用moco mock http请求_第3张图片

在这里插入图片描述


例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请求,执行结果
使用moco mock http请求_第4张图片

使用moco mock http请求_第5张图片
使用moco mock http请求_第6张图片

带cookies信息的post请求,执行结果

使用moco mock http请求_第7张图片

使用moco mock http请求_第8张图片

使用moco mock http请求_第9张图片

返回cookies信息的get请求,执行结果
使用moco mock http请求_第10张图片

使用moco mock http请求_第11张图片
在这里插入图片描述


例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"
			}
		}
	}
]

执行结果如下:
使用moco mock http请求_第12张图片
使用moco mock http请求_第13张图片

使用moco mock http请求_第14张图片
在这里插入图片描述

例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,重定向到了百度,结果如下
使用moco mock http请求_第15张图片

输入http://localhost:8888/redirect/topath,重定向到自己写的url,结果如下
使用moco mock http请求_第16张图片

你可能感兴趣的:(moco)