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包,进行下载。

Java 后端 返回 key value 列表 java返回接口_重定向

如何启动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。

Java 后端 返回 key value 列表 java返回接口_post请求_02

新建一个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

启动成功

Java 后端 返回 key value 列表 java返回接口_json_03

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

Java 后端 返回 key value 列表 java返回接口_post请求_04

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

浏览器访问,返回结果:

Java 后端 返回 key value 列表 java返回接口_重定向_05

注意:如果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进行查看。

Java 后端 返回 key value 列表 java返回接口_java 接口返回不带双引号_06

Java 后端 返回 key value 列表 java返回接口_重定向_07

注意:

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;

Java 后端 返回 key value 列表 java返回接口_json_08

Java 后端 返回 key value 列表 java返回接口_json_09

带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。

Java 后端 返回 key value 列表 java返回接口_java 接口返回不带双引号_10

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

Java 后端 返回 key value 列表 java返回接口_重定向_11

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 返回“重定向成功啦”就代表重定向成功。