前言
在开发中我们经常会遇到一些场景,比如说当公司新开发项目或者功能的时候,服务器那边还在搭建中,UI这边已经出图可以做了,我们又不想写一些死数据放在项目中,希望能过通过请求接口获取数据来搭建界面,该怎么办呢?
这样就要用到Moco了,我们可以自己在本地搭建一个服务器写好想要数据,然后我们通过接口get或post请求将数据拿到项目中去使用。
本文使用AFNetworking来做数据请求
首先得配置jdk,环境变量的配置就不多说了,参考mac下jdk环境变量的配置
- 点击链接下载jar包moco服务端
- 新建一个文件夹,将下载好的jar包更名之后拖拽到该文件夹下
- 新建Configs.json文件,这个文件用于配置api,里面引用需要配置到服务器的请求文件(后缀必须用.json,并且打开方式建议使用Xcode打开编辑)
注意不要使用文本编辑器打开编辑,会有符号不识别在运行的时候程序会报错,请使用XCode打开编辑
完成后如下:
单个文件配置和全局文件配置任选一种
- 单个文件配置
这种情况下是将所有的接口请求和数据返回都放在一个.json文件中进行
例如:在Config.json中写入数据
[
{
"response": {
"text": "Hello world!"
}
},
{
"request": {
"method" : "get",
"uri": "/getMethod"
},
"response": {
"text": "This is a Get Method!"
}
}
]
- 全局文件配置
Moco支持在全局的配置文件中引入其他配置文件,这样就可以分服务定义配置文件,便于管理。在全局文件中引入即可。
例如:
- 在localServer文件夹中新建一个login的文件夹;
- 在login文件夹中新建login_request.json文件以及login_response.json文件;
在Config.json中写入
[
{
"include" : "login/login_ request.json"
}
]
如果有多个文件夹的情况下是这样导入的
[
{
"include" : "login/login_ request.json"
},
{
"include" : "register/register_ request.json"
}
]
在login_ request.json中写入
[
{
"request" :
{
"uri" : "/test/login",
"method" : "get",
"queries" :
{
"username" : "admin",
"password" : "123456"
}
},
"response" :
{
"file" : "./login/login_response.json"
}
}
]
在login_response.json中写入
[
{
"flag" : ture
}
]
文件配置好之后,进行如下操作
打开终端,输入以下内容:
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回车后结果如下:
Hello World!
在浏览器里输入http://localhost:8080/getMethod 回车后结果如下:
This is a Get Method!
说明模拟服务器是可以正常使用的。到此服务器就搭建完毕了。是不是很简单!
下面是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!"
}
}