rrestjs v0.9升级文档

v0.9.0

1、补完了一些测试代码

2、新增加api:request.param 会将所有客户端发送过来的参数,不论get或者post等的参数放入这个对象。

3、新增手动路由功能:
用户可以再config.js新增这样的设置:

1
2
3
4
5
6
7
8
manualRouter:{
"get:/user/face":function(req, res){res.send('change face')},
"post:put:/user/info":function(req, res){res.send('get not access!')},
"/user/all":function(req, res){
if(!req.session.count) req.session.count = 0
res.send('all can access!'+(req.session.count++));
},
}

设置规则:method:method:url
注意:url必须是“/”开头的。
如果不加method则表示该 url 接受任何方式的 http 请求

4、修复了模版静态缓存可能存在的缓存雪崩效应
5、修复了不依赖jade和ejs模块的小问题

v0.9.1

1、修复了$.post(‘/‘, {a:[1,2,3],b:{a:{t}}}) 这类的请求非KEY-VALUE格式参数的错误

v0.9.2
1、修复了0.9.1的执行2次post请求回调函数的bug
2、完善了部分测试用例
3、新增加API更加简洁,去掉了rrest,当然原有的程序还是可以继续使用rrest
例如:
原来执行hello world如下代码:

1
2
3
4
5
var http = require('http'),
rrest = require('rrestjs'),
server = http.createServer(rrest(function (req, res){//完全原生的node.js手册代码风格,没有学习门槛
res.send('hello world everyone!'); //rrestjs封装了一个res.send方法,用来响应客户端的请求
})).listen(rrest.config.listenPort);//读取配置文件的监听端口号,只需修改配置文件即可轻松部署

现在可以不用写rrest了,而是直接fn,如下:更加简洁明了

1
2
3
4
5
var http = require('http'),
rrest = require('rrestjs'),
server = http.createServer(function (req, res){//完全原生的node.js手册代码风格,没有学习门槛
res.send('hello world everyone!'); //rrestjs封装了一个res.send方法,用来响应客户端的请求
}).listen(rrest.config.listenPort);//读取配置文件的监听端口号,只需修改配置文件即可轻松部署

v0.9.3(救火版本)
1、紧急修复了由于path.normalize函数在windows下出现的意外情况,重新写了normorlize方法使windows下可以正常运行rrestjs框架
2、修复了parse整合css和js文件可能存在的相对路径安全漏洞
3、增加了一项参数带“.”的解析功能,比如:
客户端请求user.name=aaa && user.sex = male
现在将会自动解析成:

1
2
3
{
user:{name:'aaa', sex:'male'}
}

4、修改了部分测试用例,使测试更加健壮,比如深层次的jade模版等

v0.9.4
1、修复了get请求下无法获取req.param的bug
2、增加和完善了一些测试用例,增加main.js测试总开关,只要执行main.js会自动执行所有测试用例
3、新增加一项配置:

1
ClusterReloadExcept:['.swo', '.swp', '.swn', '.swx', '.bak'],//排除后缀名是此数组内的文件修改的重启进程

如果开启开发者模式,则后缀名为数组内的文件修改不会引起项目重启

v0.9.5
1、增加了自定义路由占位符,比如可以这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
manualRouter:{

"get:/user/face":function(req, res){res.send('change face')},

"post:put:/user/info":function(req, res){res.send('get not access!')},

"post:put:/user/info/{userid}":function(req, res){res.send('get user id!')},


//{}花括号内的为变量占位,表示此段url为可变参数

"/user/all":function(req, res){

if(!req.session.count) req.session.count = 0

res.send('all can access!'+(req.session.count++));

},

}

2、增加response.r403()方法,快捷相应403forbidden
3、增加response.r500()方法,快捷相应500内部错误
4、增加npm install -g rrestjs,
直接生成项目文件夹: rrestjs -p /tmp/foo && cd /tmp/foo;
也可以使用开发者模式,带自动重启(windows下无效) rrestjs -p /tmp/foo -d && cd /tmp/foo;
帮助请参考rrestjs -h
5、增加了测试用例

v0.9.9版本
1、增加了dev模式,可以通过命令node app.js -d 或者node app.js –dev 进入开发模式,可以调用开发模式的配置
2、正常打印了restlog.error 下的错误堆栈调用错误列表
3、修正了staticMaxAge这个语法错误

v0.9.10版本
1、增加了多进程可能冲突记录日志的问题,将多进程记录了到多个文件日志
2、修正了上传文件多余的属性问题
3、修正了api,去除了如下的代码

1
2
3
4
5
server = http.createServer(rrest(function (req, res) {

res.send('hello world');

})).listen(rrest.config.listenPort);

去除上面代码红色部分,同意api为:

1
2
3
4
5
server = http.createServer(function (req, res) {

res.send('hello world');

}).listen(rrest.config.listenPort);

4、如果不是创建http或者https服务器想使用rrestjs框架的话可以用如下代码:

1
2
3
4
var rrest = require('rrestjs');
rrest(function(){
//rrestjs框架加载完毕会执行这个回调函数
})