用Moco在Mac上搭建本地服务端
[toc]
前言
这段时间开发经常遇到这样的问题,UI设计稿出完了,但是服务端后台那边还在做,接口还在写,但我们又不想写死数据,希望能过通过请求接口获取数据来搭建界面。那该怎么办呢?
这样就要用到Moco了,我们可以自己在本地搭建一个服务器写好想要数据,然后我们通过接口get或post请求将数据拿到项目中去使用。
准备工作
在Mac上配置JDK环境,去官网直接下个JDK安装包即可
点击链接下载jar包moco服务端
新建文件夹(命名任意),新建Config.json文件,这个文件用于配置api,里面引用需要配置到服务器的请求文件(后缀必须用.json,并且打开方式建议使用SublimeText打开编辑),新建文件也可以使用使用SublimeText新建。
全局文件配置
Moco支持在全局的配置文件中引入其他配置文件,这样就可以分服务定义配置文件,便于管理。在全局文件中引入即可。
1.在localServer文件夹中新建一个login的文件夹;
2.在login文件夹中新建login_request.json文件以及login_response.json文件;
在Config.json中写入
[
{
"include" : "login/login_ request.json"
}
]
include是导入文件,我们新建的其它配置文件,都在Config导入进入
其他配置文件
在login_ request.json中写入
[
{
"request" :
{
"uri" : "/assetApp/login",
"method" : "get",
"queries" :
{
"username" : "sa",
"password" : "sa"
}
},
"response" :
{
"file" : "./login/login_response.json"
}
}
]
在login_response.json中写入
[
{
"status": "OK",
"code": 200
}
]
开启服务端
打开终端,输入以下内容:
cd <Config.json当前目录>
回车后再输入以下内容:
//8080是端口号,可以是任意数字
单个配置如下:java -jar moco-runner-0.10.2-standalone.jar start -p 8080 -c Config.json
全局配置如下:java -jar moco-runner-0.10.2-standalone.jar start -p 8080 -g Config.json
[注意] 在全局配置下时,需要通过参数 -g 在加载全局配置文件,使用的不是-c了,否则配置文件解析会报错。
出现如下内容表示运行成功
[main] INFO Server is started at 8080
[main] INFO Shutdown port is 51372
在浏览器里输入http://localhost:8080/assetApp/login?username=sa&password=sa回车后结果如下:
[
{
"status": "OK",
"code": 200
}
]
说明模拟服务器是可以正常使用的。到此服务器就搭建完毕了。是不是很简单!
下面是POST和GET两种常用的网络数据请求的配置
request请求
有14个固定的属性: method
, headers
, json
, factory
, uri
, text
, cookies
, xpaths
,json_paths
, version
, file
,queries
,path_resource
,forms
。一定要遵循这些方法。 常用的method(请求方式)
, headers(heads参数)
,uri(url地址)
,file(指定调用的请求文件)
, queries(请求带参)
,forms(表单内容)
。
response响应
有12个固定属性:status
, attachment
, headers
, version
, factory
, file
,text
, proxy
, cookies
,json
, latency
, path_resource
。
在本篇文章中用到file
,text
。
Get 方法 不带参数
[
{
"request": {
"method" : "get",
"uri": "/getMethod"
},
"response": {
"text": "This is a Get Method!"
}
}
]
浏览器输入链接http://localhost:8080/getMethod
Get方法 带参数
默认的请求方式是Get,你可以不用写method。
{
"request": {
"uri": "/getMethodWithParams",
"queries": {
"param1": "1",
"param2": "2"
}
},
"response": {
"text": "This is a method with params!"
}
}
浏览器输入链接http://localhost:8080/getMethodWithParams?param1=1¶m2=2
Post 方法
写一个复杂的带有headers,body的Post 请求方法:
{
"request": {
"method" : "post",
"uri": "/postMethod",
"headers" : {
"content-type" : "application/json",
"sessionid": "e566288ba77de98d"
},
"forms" :{
"name" : "admin",
"password" : "123456"
}
},
"response": {
"text": "This is a POST Method!"
}
}