rrestjs的0.8版本发布了,修复了一些bug,新增了一些功能,主要新增加的一块是rrestpipe,让客户端也可以享受node.js模块的福利。其实是基于socketio和now.js实现的。 rrestjs项目地址:www.rrestjs.com 我们先看截图: 1、当我们点击get请求按钮后,文本框里出现了前面域名内的内容,包括http的headers还有statuscode,和data也就是正文的字符串,这里是去请求了www.nodejs.org,前端跨域了。 2、当MD5时,把字符串rrestjs经过MD5后出现在右侧 3、读取文件后,根据前面的路径读取服务器的文件输出在右侧,这里读取的是项目根目录的packjson文件 4、序列化是指序列化 url 路径后得到的一个对象。
如果我们随便输入一些内容,就会出错了:
服务端会报错,当然有一些简单的错误理由
我们先看服务端是如何注册事件的: 参考文件:https://github.com/DoubleSpout/rrestjs/blob/master/lib/pipe/pipe.js
/*下面就是我们刚才用到的服务端注册的2个方法*/
/*
第一个是 get 方法,异步
不多介绍了
*/
clientpipe.addasy('get', function(url, asyback){
var http=require('http');
http.get(url, function(res){
var body = '';
res.on('data', function (chunk) {
body += chunk;
});
res.on('end', function(){
asyback(null, {headers:res.headers, statusCode:res.statusCode, data:body});
});
}).on('error', function(e) {
asyback('get request error');
});
});
/*
第三个是MD5方法
*/
clientpipe.addsyn('md5', function(str){
var crypto = require('crypto');
var shasum = crypto.createHash('md5');
shasum.update(str);
return shasum.digest('hex');
});
而我们的客户端只需要做2件事情就可以了: 参考文件:https://github.com/DoubleSpout/rrestjs/blob/master/example/static/pipe.html
<script src="/static/rrestpipe.js"></script>
<!--引入rrestpipe-->
rrestpipe.pipe("md5", "abcd", function(err, md5str){
alert(md5str);
})
rrestpipe.pipe("get", "http://www.nodejs.org", function(err, res){
alert(res.data);//这里返回的是对象
})
});
一个简单的服务端代码是: 地址:https://github.com/DoubleSpout/rrestjs/blob/master/example/rrestpipe.js
module.exports.conf= require('./config/post.conf.js');
var http = require('http'),
rrest = require('../'),
server = http.createServer(rrest(function (req, res) {
res.send(htmlstr);
})).listen(rrest.config.listenPort);
rrest.clientpipe(server);
var fs = require('fs');
var htmlstr = fs.readFileSync(__dirname+'/static/pipe.html', 'utf-8')
大家如果感兴趣的话可以 npm install rrestjs 或者去github上下载rrestjs github地址 然后运行里面的 example/rrestpipe.js 实例看下就知道了,默认端口在3000
相信看完本文的TX都会问一个问题,安全如何保证,至于安全就要看你开发什么功能给前端js利用了