- 简介 =========
CleanBackEnd 是用编写 Restful 服务的一个框架。包含数据库操作等便利功能。
- 具体说明 =========
Singularity开发平台依赖 node.js 运行环境,在使用之前确保已经有可用的 node.js 运行环境。
node.js 下载地址:http://nodejs.org/dist/v0.10.28/node-v0.10.28-x86.msi
Singularity 开发平台bower使用git进行网页依赖库的下载,在使用之前确保已经有可用的 git。
Git 官网:http://git-scm.com/
npm install -g bower
npm install -g grunt-cli
下载地址: http://jmeter.apache.org/download_jmeter.cgi
解压缩,进入 bin 文件夹,执行jmeter.bat.
安装之前确保已经有 git 和 node.js 环境。node.js 需要 bower 与 grunt-cli。
执行以下命令:
git clone https://github.com/ETENG-OSP/Demo.git
cd Demo
以下命令安装的文件Demo已经含有,不需要再次执行。
npm install
bower install
目录结构:
- bower_components:通过bower安装的前台依赖包(禁止修改)
- node_modules:通过npm安装的node依赖包,主要用于页面编译(禁止修改)
- config: 对编译任务的配置文件(禁止修改)
- framework: 前台开发环境框架(禁止修改)
- dist: 生产环境部署文件
- app:开发人员工作目录(可修改)
- less: 存放css样式文件的地方,根据项目情况开发
- views: 放静态页面的地方,根据项目情况开发
- js: 项目所用的js文件都在此进行开发
文件:
- bower.json:bower索引文件,记录需要下载的包和版本(禁止修改)
- Gruntfile.js:编译脚本(谨慎修改)
- package.json:node索引文件,记录编译器所依赖的包和版本(禁止修改)
- README.md:说明文件
下载地址:
grunt //启动服务器
- 在app/views/新增XXX.html
- 修改app/js/routes/root.js中增加URL与XXX.html文件的映射关系
- 在app/js/controllers新增XXX.js,XXX.js自动注册允许使用,无需人工干预
- 在XXX.html中引用控制层,如
- 初始化数据模型
<div ng-controller="UserController" ng-init="UserVO={username:'主席'};vos=[]">
- 在输入项中使用ng-model方式绑定录入数据,使用VO.属性名的方式,如:
<input ng-model="UserVO.username" type="text" >
- 使用{{变量名}}方式进行数据绑定读取,如:
{{UserVO.username}}
定义:数据模型——$scope,网络服务——$http
- 在控制层,由数据模型获得数据,如:var name = $scope.UserVO.username
- 在控制层,向数据模型提交数据,如:$scope.UserVO.username ='国家主席';
- 在控制层进行http网络接口调用,如:$http.post('//localhost:8080/api/user', UserVO)
-
控制层处理的是数据模型的变化,服务层处理与数据模型无关的操作;
-
我们使用服务层将http请求与控制层分离,控制层无需关心服务的结果是从何处得到的,同时服务层也不关心处理的结果应该被如何使用;
-
我们使用 Javascript Promise API 处理服务中的异步操作,这样能够保证正确处理
多个异步操作的失败处理流程;
- 新建的服务放在 app/js/services 中,供控制层调用。例如XXXAPI.js,XXX.js自动注册允许使用,无需人工干预.
- 所有符合restful规范的url,都以/api为前缀,代表restful接口服务。
- 代码规范:
在java项目中,专门有api包,类定义以API结尾,用来提供restful接口。
URL中的第一个资源定位关键字(/api后的单词),为Restful接口的类名前缀。
类名尽量使用名词进行定义。如:UserAPI.class
在类定义时,指定MIME:@Produces("application/json;charset=UTF-8")
跨域访问通过过滤器控制:
res.addHeader("Access-Control-Allow-Origin","*");
res.addHeader("Access-Control-Allow-Headers","Origin, X-Requested-With, Content-Type, Accept");
- 参数传递规范:
POST、PUT、DELETE下,参数以JSON的格式
针对GET设计规范(查询),url的path部分是针对资源的定位.资源定位的类型有两
种.一种是针对于全部 资源的定位,一种是针对于特定资源的定位.
- 针对全部资源的定位可以使用查询条件.查询条件以QueryString的形
式在path之后.GET /user?offset=1&limit=99
-
针对单个资源的定位,使用url参数.如GET /user/1
-
返回值规范:
成功返回状态码为200,失败状态码为500
返回值以JSON的格式
CleanBackEnd环境要求:
不包含平台java源码
不包含任何前台页面内容,如:HTML、CSS、JS、JSP
通过Jar包及配置文件齐全
含DEMO场景代码及Jmeter测试案例
执行以下命令:
git clone https://github.com/ETENG-OSP/CleanBackEnd.git
Windows系统打补丁流程比较简单,略过;下面着重描述Centos打补丁流程:
- 端口号分配
n1:10000 n2:10010 n3:10020
t1:10030 t2:10040
- 说明
n1连接服务器:n2,n3
n2连接服务器:t1,t2
n1连接n2的条件以/api开头.
n1连接n3的条件以不是/api以外的url.
n2随机向t1,t2转发请求
人员的增删改查:此部分采用restful的标准资源方式
人员的离职:部分采用restful非标准的动作调用方式,一律采用POST方式
此应用不做权限处理.均允许匿名访问.
- 插入一个用户
POST /api/user
[params]
{
"username":String,//用户名
"flag":int //0代表在职 1代表离职
}
[return]
{
"message":String,
"id":String
}
- 将用户进行离职操作:有此用户进行正常离职操作,返回状态码 200,message离职成功。 如果用户不存在,返回码500,message用户不存在.
POST /api/user/resign
[params]
{
"id":String,//用户ID
}
[return]
{
"message":String
}
使用jmeter测试
2.9.3.1 新建线程组.
2.9.3.2 增加HTTP请求
2.9.3.3 增加响应断言
2.9.3.4 增加察看结果树(功能测试使用)
2.9.3.5 增加生成概要结果(压力测试使用)
- 平台更新步骤 =========
- 下载整套CleanBackEnd,将WebContent/WEB-INF/lib中的
- 将ETFrameWorkV2.0.1.jar粘贴到原有项目的 WebContent/WEB-INF/lib
- 修改原有项目的Build Path.移除原有对 ETFrameWorkV2.0.jar的引用.
- 增加对新的 ETFrameWorkV2.0.1.jar的引用.
- 删除在项目当中 ETFrameWorkV2.0.jar.
- 在conf/common_config.xml中的标签内部添加
ETFrameWorkV2.0.1.jar复制出来中。
<defaultSystemAccount>etframework</defaultSystemAccount>
Demo 分为源码部分与开发环境。
源码部分为项目团队进行开发的部分;源码部分为 app 文件夹
开发环境由平台统一升级:;除app外的所有其他文件
升级方法为:
下载最新开发环境 git clone
https://github.com/ETENG-OSP/Demo.git
将源码部分从原来的项目中复制到最新的开发环境
2014.09.10 ETFrameWorkV2.0.1
此次版本修正了默认帐套信息的读取方案