使用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等字符串
versionhttp请求版本号,比如HTTP/1.0字符串
headers请求头json串
cookiescookie信息json串
forms用于post请求传递参数json串
match用于配置符合正则表达式的请求字符串
jsonget请求参数为json串
startsWith以…开头字符串
endsWith以…结尾字符串
contain包含…内容字符串
exist用于判断…请求信息是否存在字符串

2.3 Response响应部分

关键字描述格式
text配置响应内容字符串
file若响应内容太多,可以方法文件中,配置存放响应内容的文件名字符串
charset设置文件编码字符串
status状态码int
versionhttp响应版本号,默认情况下,http响应版本号应该是http请求版本号,但是你也可以自行设置响应版本号字符串
headers响应头json串
proxy我们也可以使用指定的URL进行响应,就像代理一样。
failover除了基本功能外,代理还支持故障转移,这意味着如果远程服务器暂时不可用,服务器将从本地配置恢复。
playback回放
redirectTo重定向
cookiescookie信息json串
jsonresponese为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,结果如下
在这里插入图片描述

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值