详解用node . js实现Restful风格网络服务

  

Restful风格的WebService正在渐渐取代传统的肥皂,Java也有很多Restful的框架,很方便简洁,泽西岛,restlet,甚至SpringMVC也可以,不得不说休息让人从网络转型到网络服务更容易和方便,当然深入Restful的理论还是发现比较复杂的,但是,开发和理论并不需要那么的贴合,有时候伪Restful更直观,靠谱些。
  

  

但是,作为很帅的节点。js怎么可以不和同样帅气的Restful相结合呢! ?对于我们这种无视理论的开发者来说,Restful不就是url的规范+ HTTP方法的规范而已嘛,所以节点这种很自由的技术来说,同样实现Restful变的非常正常。不需要什么框架,但是我还是用了快递,快递只是对原生的HTTP模块的一层封装而已,不要那么计较嘛!
  

  

Java曾经是一个Xml配置文件横行的世界,现在是各种注释(注解)乱入的世界,虽然注解的侵入性比较小,但是加了一摞注解的类也让人伤神,尤其是各框架混杂的注解,好在各大框架还是比较自觉的,各种负责不同的层,所以还不会导致各种注解的混乱。好了,那么下面欢迎来到,没有注解,也没用Xml的世界:
  

  

- - - - -我是例子- - - - - - - - - - - -

        var=需要表达(表达)//加载模块   应用var=表达()//实例化之      var地图={" 1 ":{id: 1、名称:“测试”},“2”:{id: 2,名字:“测试”}}//定义一个集合资源,为关键字符串完全是模仿java MAP否则谁会这么去写个哈希啊!      app.get(/设备,函数(点播,res) {//Restful得到方法,查找整个集合资源   res.set({“内容类型”:“文本/json”,“编码”:“use utf8”});   res.send(地图)   })   app.get(/设备/:id,函数(点播,res) {//Restful得到方法,查找一个单一资源   res.set({“内容类型”:“文本/json”,“编码”:“use utf8”});   res.send (map [req.param (id)))//console.log (req.param (id))   })   app.post('/设备/',express.bodyParser()函数(点播,res) {//rest式发布方法,创建一个单一资源   res.set({“内容类型”:“文本/json”,“编码”:“use utf8”});   [req.body地图。id]=req.body   res.send({状况:“成功”,url:“/设备/? req.body.id})//id一般由数据库产生   })   app.put(/设备/:id, express.bodyParser()函数(点播,res) {//Restful把方法,更新一个单一资源   res.set({“内容类型”:“文本/json”,“编码”:“use utf8”});   [req.body地图。id]=req.body   res.send({状况:“成功”,url:“/设备/? req.param (id),设备:req.body});   })   app.delete(/设备/:id,函数(点播,res) {//Restful删除方法,删除一个单一资源   res.set({“内容类型”:“文本/json”,“编码”:“use utf8”});   删除地图(req.param (id)]   res.send({状况:“成功”,url:“/设备/? req.param (id)})   console.log(地图)   })   app.listen (8888);//监听8888端口,没办法,总不好抢了tomcat的8080吧!   之前      

- - - - - - - - - - - -我是测试- - - - - - - - - - - -

  

详解用node . js实现Restful风格webservice

  

用邮差测试好,代码中唯一让人诧异的应该是删除地图(req.param (id)],我们知道js的地图是一个对象,或者对象是一个地图,删除对象。属性,可以删除这个属性,但是删除对象[属性]也可以把这个属性给干掉,删除啊。x也可以写作删除o [x],两者效果相同关于删除请观看:ECMAScript删除!
  

  

系不系很方便哈!和那些XXX框架些的代码很类似啊!如果你是一个寻求不同的人,节点。js当然也满足你,一直备受争议的路由表上场了:
  

  

- - - - - -我是另一个文件:routes.js - - - - - - - - - -

        {得到:   [{路径:“/?   方法:“得到”,   回调(对象):,   键:[],   regexp:/^ \/\/& # 63; $/我},   {路径:/user/: id,   方法:“得到”,   回调(对象):,   键:[{名称:“id”,可选:假}),   regexp:/^ \/user \/(& # 63;:([/^ \] + & # 63;)) \/& # 63; $/我}),   删除:   [{路径:/user/: id,   方法:“删除”,   回调(对象):,   键:(对象),   regexp:/^ \/user \/(& # 63;:([/^ \] + & # 63;)) \/& # 63;美元/我}]}   之前      

定义这么一个对象,然后

        var路线=要求(“。/路线”)   app.use (app.router);//保留原来的   路线(app);//这个是新加的,将前者作为默认路由      

关于路线的更多内容:表达官网,,靠谱些,毕竟节点。js最大的问题,就是资料的api都太旧了!

详解用node . js实现Restful风格网络服务