WEB前端开发数据模拟工具JOJO
注:图片见压缩包中的word文档!
前端数据模拟工具V1.0(JOJO)
一、什么是JOJO
JOJO是一个简单的数据模拟服务器,可以模拟前端页面与后端数据交互的模拟,类似于MOCO,JOJO本身的开发灵感来自于MOCO框架,个人认为MOCO配置相对复杂,需要了解的东西比较多,现在基于MOCO的demo也比较少,而且不支持JSONP的形式!(我所需要的是对应的一个URI我能模拟一个我想要的响应数据这就满足我的要求了)这个基于Java开发的开源项目(支持桌面应用,支持配置文件路径切换和端口切换)!
二、为什么要开发这个工具!
集成,尤其是基于 HTTP 协议的集成——web service、REST 等,在我们的项目开发中被广泛应用。以前,我们每次都要往 Jetty ,JBOSS或 Tomcat 等应用服务器上部署一个新的 WAR。大家都知道,开发部署一个 WAR 的过程是很枯燥的,即使在嵌入式服务器上也是如此。而且,每次我们做一点改动,整个 WAR 都要重新组装。JOJO的出现,正是为了解决这些问题。开发团队只要根据自己的需要进行相应的配置,就会很方便得到一个模拟服务器。而且,由于 JOJO本身的灵活性,其用途已经不再局限于最初的集成测试,比如JOJO可以用于前端开发,JOJO 还可以用于移动开发,模拟尚未开发的服务;以及应用接入数据的模拟!模拟一个完整的 Web 服务器,等等!(对于前端开发的话,可能不需要有web容器的支持,由UED提供简单的DEMO文件夹,再通过接入后端服务将后端数据展示出最终渲染页面,从中就会遇到一些跨域的问题!如果纯粹只是为了这样一个目的解决跨域,因为MOCO中无法提供的JSONP支持,所以也就引燃了开发这个模拟工具的导火线!)
三、为什么叫工具而不是框架
个人认为只是一个工具!是不是框架不作讨论!
四、JOJO这个工具的使用
桌面版
适用于windows系统(经测试)
<!--[if !supportLists]-->1、 <!--[endif]-->先安装好jdk!
<!--[if !supportLists]-->2、 <!--[endif]-->启动服务界面:
直接双击启动或者命令行输入java -jar SimulateDataTool.jar 会出现如下界面:
(1)、工具
启动界面
<
工具说明
1、Config folder path:配置文件存放路径,默认为SimulateDataTool.jar所在文件夹位置!
2、Select Folder:选择配置文件存放路径!
3、Server IP…:服务器IP地址:配置必须为所在机器的IP或者为127.0.0.1,默认为127.0.0.1!
4、Server Port:服务器端口号!为未使用的端口号,默认为8888
5、Start Service:启动web监听服务
6、Stop Service:停止web监听服务
命令行版:
适用于windows系统和unix系统(经测试)
1、 安装好jdk!
2、 启动服务:
命令行输入java -jar SimulateDataTool.jar 127.0.0.1 8888 ,参数为必填项!参数1为监听服务器IP地址,参数2为监听服务器端口号
3、服务启动成功界面
配置文件的编写
1、 以Hello World 为例(对于程序员举例亘古不变的名词)
(1)、配置文件名称以.json结尾,服务启动的时候程序会扫描对应配置文件路径下的所有匹配*.json格式的文件,读取相关配置!
(2)、最基本的参数变量,格式以json格式提供:如:
{
"request":{ //request参数:请求配置参数
"method":"get",//请求方式 目前支持get post 默认为get
"type":"json",//请求类型 json(jsonp) text html 当请求为json或者jsonp的时候response返回的内容为{“key”:“value”}json格式,其中当为jsonp的时候会根据传入的hpjsonpcall或者jsonpcallback两个参数的存在于否生成jsonp对应的函数类似于jsonpcallback({“key”:”value”}); 当请求为text的时候response对应输出的是字符串,如”response”:”<h1>Hello World</h1>” 则最终web请求生成的页面内容为“<h1> Hello World</h1>”经过转义的内容; 当请求为html的时候response对应输出的是字符串,如”response”:”<h1>Hello World</h1>” 则最终web请求生成的页面内容为原样输出“<h1>Hello World</h1>”;若此type参数不作配置,则输出也为html! 默认为html
"uri":"/mobile/mobileOrder.do",//需要拦截响应的uri请求
"params":{"param1":"paramValue2","param2":"paramValue2"…} //request请求的参数,暂时对配置请求参数各web请求参数名称进行匹配,暂时不对参数值进行检验,如果名称不匹配则输出错误提示!默认为无参数
},
"response":””||{//response响应参数 由request中的type请求类型决定输出
"status":"success",//success 成功 ,fail 失败 ,login 需要登录 三种状态为标准定义,也可以由需求扩展定义,可以自由发挥
"msg":"Hello World", //成功或者失败返回的消息
"data":{} //其它需要返回的对象
…}
}
<1>、Demo1 最简配置
{"request":{
"uri":"/mobile/index.do"
},
"response":"Hello World"
}
<2>、Demo2 模拟手机充值返回订单信息
{"request":{
“method”:”post”,
"uri":"/mobile/index.do",
“params”:{“mobile”:”13816085314”,”confirm”:”13816085314”,”value”:”50.00”},
“type”:”json”
},
"response":{“status”:”success”,
”msg”:”订单信息获取成功!”,
”order”:{“orderId”:”111”,”orderDate”:”20140815104622”,”value”:”50”…}
“backends”:{“backendcode”:”ccb”,”backendName”:”建行支付方式”}
}
}
访问WEB服务
http://127.0.0.1:8888/mobile/mobileOrder.do?mobile=13816085314
协议://IP地址:商品号/uri?params
通过访问不同的URI得到不同的response结果
如:
Type为text
Type为json
Type为jsonp
Type为html
参数名称未匹配
Ngnix配置,模拟真实环境以及https的配置
在ngnix配置文件中增加配置:
1、增加模拟数据服务器的监听配置:
upstream simulateData{
server 127.0.0.1:8888;
}
2、 在80端口监听配置处增加对应应用的访问配置,模拟真实环境数据返回
Ngnix配置之后流程模拟
https的配置
ngnix中https 走443端口:
Ngnix配置之后的参数不匹配错误