有什么工具可以快速建立起一个Mock服务呢?
Moco
GitHub项目主页:https://github.com/dreamhead/moco
Moco之所以很受欢迎是因为这个项目主要特点是:简单、轻量、功能完全够你用。
安装与配置
下载地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/1.1.0/moco-runner-1.1.0-standalone.jar
整个Moco服务就是一个jar包,如果想要启动它只需要你本地安装了Java,然后执行一个命令。
java -jar moco-runner--standalone.jar http -p 12306 -c foo.json
- -p 启动的服务端口号
- -c 配置文件路径
这个json格式的配置文件,才是Moco的核心。你想要模拟什么内容的返回,都靠它来决定。
编写配置文件
我们首先按照官方给出的示例,新建一个foo.json,模拟一个最简单的接口返回。
[ { "response" : { "text" : "Hello, Moco" } }]
(foo.json)
此时启动Moco服务
java -jar moco-runner--standalone.jar http -p 12306 -c foo.json
访问 http://localhost:12306,你会看到一个Html响应,内容为:Hello, Moco
moco1.jpg
配置文件语法规范
学会了它的简单使用,根据我的风格,下面就要介绍这个Json配置文件里,到底都能写什么?如何模拟复杂一点的需求?
总体格式
我们稍微观察一下就会发现,配置文件格式很简单。总体是一个大的列表,每一个接口就是一个大的{ }。
配置二级路径
现在的Moco服务只有一个地址,就是本地12306。我想继续配置二级、三级路径,比如增加一个/user/login代表登录接口。只需要在当前接口的区域增加一个request,填写url皆可。格式如下:
[ { "request" : {"uri": "/user/login"}, "response" : {"text" : "Hello, Moco"} }]
访问 http://127.0.0.1:12306/user/login
moco2.jpg
模拟一个Json格式的返回
[ { "request" : { "uri": "/user/login", "method" : "get", }, "response" : { "status": 200, "headers": {"content-type": "text/x-json;charset=UTF-8"}, "json": {"code": 0, "message": "login"} } }]
访问 http://127.0.0.1:12306/user/login
moco3.jpg
携带请求参数--query
[ { "request" : { "uri": "/user/login", "queries": { "name": "admin", "pwd": "123456" } }, "response" : { "status": 200, "headers": {"content-type": "text/x-json;charset=UTF-8"}, "json": {"code": 0, "message": "login"} } }]
访问:http://127.0.0.1:12306/user/login?name=admin&pwd=123456
moco4.jpg
匹配请求参数--query
[ { "request" : { "uri": "/user/login", "queries": { "page": { "match": "[0-9]{1,}" } } }, "response" : { "status": 200, "headers": {"content-type": "text/x-json;charset=UTF-8"}, "json": {"code": 0, "message": "login"} } }]
访问:http://127.0.0.1:12306/user/login?page=7
moco5.jpg
Post 请求参数--form表单
[ { "request" : { "uri": "/user/login", "method" : "post", "forms": { "name" : "admin", "pwd" : 123456 } }, "response" : { "status": 200, "headers": {"content-type": "text/x-json;charset=UTF-8"}, "json": {"code": 0, "message": "login"} } }]
使用Postman访问:http://127.0.0.1:12306/user/login
moco6.jpg
我们演示了Moco Json Api的基本语法使用,包括模拟各种请求参数格式和响应格式,更多详细内容大家参考它的官方文档,里面有很清晰地描述。
https://github.com/dreamhead/moco/blob/master/moco-doc/apis.md
Moco功能强大,常规的Http场景比如:Cookie、重定向全部支持。但是习惯平时深度思考的同学,肯定会觉得哪里不对。
我们现在的Mock服务还有很多缺点,比如无法根据参数的不同,动态返回响应内容;无法筛选请求(如果要Mock的话,所有的请求都要在Moco启动的服务器中处理,想保留部分接口不使用Mock功能就做不到)。我们在下个小节中会进一步改造我们利用Moco搭建起来的Mock功能。