前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >学习Moco接口框架

学习Moco接口框架

作者头像
用户5521279
发布2019-06-18 15:47:37
1.3K0
发布2019-06-18 15:47:37
举报
文章被收录于专栏:搜狗测试搜狗测试

Moco能做什么?

可以让我们快速搭建起一套接口服务,这样做的好处是:

1、开发没有开发完成时,我们就有一套可供调试代码的环境;

2、前端同学也可以使用这套环境来联调;

3、可以与开发同学一起把接口入参、返回值等规范在开发前就一起定好。

如果中间接口有修改,Moco修改也非常的方便。

如何获得Moco框架?

Moco框架是Github上的一个开源项目,可以模拟一些http、https、socket协议。

jar包下载地址:

http://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.11.0/

选择下图中圈出的jar包,进行下载。

如何启动Moco,以及Demo示例

启动命令如下:

java -jar ./moco-runner-0.11.0-standalone.jar http -p 0089 -c startup1.json
// java -jar jar包名 协议类型 -p 端口号 -c json配置文件(一定是路径,可以是相对路径,也可以是绝对路径,相对于使用java命令目录下)

在IDEA中创建目录moco,把下载好的jar包 moco-runner-0.11.0-standalone.jar 放在目录下,创建一个json的demo文件 startup1.json。

新建一个json文件:startup1.json,代码如下:

[
{
"description":"这是一个moco例子",
"request":{
"uri":"/demo"
},
"response":{
"text":"moco demo"
}
}

description:程序不会识别,是写给我们自己看的。

request:是请求,里面的 uri 是我们访问应用的时候拼接在端口后面的路径。

response:是响应。

执行命令:

java -jar ./moco-runner-0.11.0-standalone.jar http -p 0089 -c startup1.json

启动成功

浏览器访问正确的url,返回信息如下:

Moco框架的http协议Get方法的Mock实现

1. 模拟一个不带参数的get请求

uri:访问路径;

method:标识访问方法。

[
{
"description":"不带参数get请求",
"request":{
"uri":"/getdemo",
"method":"get"
},
"response":{
"text":"不带参数的get请求"
}
}
]

2. 模拟一个带参数的get请求

[
{
"description":"带参数get请求",
"request":{
"uri":"/getwithparam",
"method":"get",
"queries":{
"name":"小小",
"sex":"women"
}
},
"response":{
"text":"xiao xiao"
}
}
]

浏览器访问,返回结果:

注意:如果moco模拟接口返回中文如果出现乱码,可以在response中添加设置编码格式为“GBK”,添加代码如下:

"headers":{"Content-Type":"text/html;charset=gbk"}

Moco框架的POST方法的Mock实现

在moco中配置post请求,模拟一个post请求。

[
{
"description":"模拟一个post请求",
"request":{
"uri":"/postdemo",
"method":"post"
},
"response":{
"text":"这是我的第一个mock的post请求,无参",
"headers":{
"Content-Type":"text/html;charset=gbk"
}
}
]

实际应用中,大部分的post请求都是带参数的。

[
{
"description":"这是一个带参数的post请求",
"request":{
"uri":"/postwithparam",
"method":"post",
"forms":{
"name":"xiaoxiao",
"sex":"women"
}
},
"response":{
"text":"xiaoxiao"
}
}
]

post请求不能用浏览器访问,浏览器中的方法只能是get的,post接口的调用需要借助工具,这里可以使用postman进行查看。

注意:

post的传参和get不一样,get里面用的 :

"queries": {

"name": "xiaoxiao",

"sex": "woman"

}

但是 post 是用的 :

"forms":{

"name":"xiaoxiao",

"sex":"woman"

}

当然也可以用json格式,后续会介绍到:

"json": {

"name": "xiaoxiao",

"age": "18"

}

Moco框架中如何加入Cookies

带cookie信息的get请求。

{
"description":"这是一个带cookies信息的get请求",
"request":{
"uri":"/get/with/cookies",
"method":"get",
"cookies":{
"login":"true"
}
},
"response":{
"text":"这是一个需要携带cookies信息才能访问的get请求"
}
}

打开postman,添加cookie信息:login=true; path=/get/with/cookies; domain=localhost;

带cookie信息的post请求,仍然带着数据访问,请求数据和返回数据均以json格式,返回状态码200。

[
{
"description":"这是一个带cookies信息的post请求",
"request":{
"uri":"/post/with/cookies",
"method":"post",
"cookies":{
"login":"true"
},
"json":{
"name":"xiaoxiao",
"age":"18"
}
},
"response":{
"status":200,
"json":{
"xiaoxiao":"success",
"status":"1"
}
}
}
]

postman发送json请求:

1. 选择post请求方式, 同时将header的content-type设置为application/json。

2. 设置body的编码方式为raw,application/json, raw是发送纯文本,不包含任何空格的编码方式。

Moco框架中如何加入Header信息

GET和POST请求都一致,带header信息的post请求,访问的时候加上请求头信息。

[
{
"description":"这是一个带header信息的post请求",
"request":{
"uri":"/post/with/headers",
"method":"post",
"headers":{
"content-type":"application/json"
},
"json":{
"name":"xiaoxiao",
"sex":"woman"
}
},
"response":{
"json":{
"xiaoxiao":"success",
"status":"1"
}
}
}
]

Moco框架中如何进行重定向

redirect重定向跳转传值。

[
{
"description":"重定向到搜狗",
"request":{
"uri":"/redirect"
},
"redirectTo":"http://123.sogou.com"
},
{
"description":"重定向到一个自制的网页上",
"request":{
"uri":"/redirect/topath"
},
"redirectTo":"/redirect/new"
},
{
"description":"这是被重定向到的请求",
"request":{
"uri":"/redirect/new"
},
"response":{
"text":"重定向成功啦"
}
}
]

第一个访问 http://localhost:1018/redirect 跳转到搜狗;

第二个访问 http://localhost:1018/redirect/topath 返回“重定向成功啦”就代表重定向成功。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档