Restful風(fēng)格的WebService正在漸漸取代傳統(tǒng)的SOAP, Java 也有很多Restful的框架,很方便簡潔,Jersey,restlet,甚至SpringMVC也可以,不得不說Rest讓人從Web轉(zhuǎn)型到WebService更容易和方便,當(dāng)然深入Restful的理論還是發(fā)現(xiàn)比較復(fù)雜的,但是,開發(fā)和理論并不需要那么的貼合,有時(shí)候偽Restful更直觀,靠譜些。
站在用戶的角度思考問題,與客戶深入溝通,找到蓮花網(wǎng)站設(shè)計(jì)與蓮花網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:做網(wǎng)站、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋蓮花地區(qū)。
但是,作為很帥的Node.js怎么可以不和同樣帥氣的Restful相結(jié)合呢!?對(duì)于我們這種無視理論的開發(fā)者來說,Restful不就是url的規(guī)范+HTTP method的規(guī)范而已嘛,所以Node這種很自由的技術(shù)來說,同樣實(shí)現(xiàn)restful變的非常正常。不需要什么框架,但是我還是用了Express,Express只是對(duì)原生的http模塊的一層封裝而已,不要那么計(jì)較嘛!
Java曾經(jīng)是一個(gè)Xml配置文件橫行的世界,現(xiàn)在是各種Annotation(注解)亂入的世界,雖然注解的侵入性比較小,但是加了一摞注解的類也讓人傷神,尤其是各框架混雜的注解,好在各大框架還是比較自覺的,各種負(fù)責(zé)不同的層,所以還不會(huì)導(dǎo)致各種注解的混亂。好了,那么下面歡迎來到,沒有注解,也沒用xml的世界:
----我是例子---------
var express = require('express') //加載模塊 var app = express() //實(shí)例化之 var map = {"1":{id:1,name:"test"},"2":{id:2,name:"test"}} //定義一個(gè)集合資源,key為字符串完全是模仿java MAP<T,E>,否則誰會(huì)這么去寫個(gè)hash啊! app.get('/devices',function(req, res){ //Restful Get方法,查找整個(gè)集合資源 res.set({'Content-Type':'text/json','Encodeing':'utf8'}); res.send(map) }) app.get('/devices/:id',function(req, res){ //Restful Get方法,查找一個(gè)單一資源 res.set({'Content-Type':'text/json','Encodeing':'utf8'}); res.send(map[req.param('id')]) //console.log(req.param('id')) }) app.post('/devices/', express.bodyParser(), function(req, res){ //Restful Post方法,創(chuàng)建一個(gè)單一資源 res.set({'Content-Type':'text/json','Encodeing':'utf8'}); map[req.body.id] = req.body res.send({status:"success",url:"/devices/"+req.body.id}) //id 一般由數(shù)據(jù)庫產(chǎn)生 }) app.put('/devices/:id', express.bodyParser(), function(req, res){ //Restful Put方法,更新一個(gè)單一資源 res.set({'Content-Type':'text/json','Encodeing':'utf8'}); map[req.body.id] = req.body res.send({status:"success",url:"/devices/"+req.param('id'),device:req.body}); }) app.delete('/devices/:id',function(req, res){ //Restful Delete方法,刪除一個(gè)單一資源 res.set({'Content-Type':'text/json','Encodeing':'utf8'}); delete map[req.param('id')] res.send({status:"success",url:"/devices/"+req.param('id')}) console.log(map) }) app.listen(8888); //監(jiān)聽8888端口,沒辦法,總不好搶了tomcat的8080吧!
---------我是測試-----------
用Postman測試ok, 代碼中唯一讓人詫異的應(yīng)該是delete map[req.param('id')],我們知道js的map是一個(gè)Object,或者Object是一個(gè)map,,delete object.property,可以刪除這個(gè)屬性,但是delete Object[Property]也可以把這個(gè)屬性給干掉,delete o.x 也可以寫作 delete o["x"],兩者效果相同 關(guān)于delete請觀看:ECMAScript delete!
系不系很方便哈!和那些XXX框架些的代碼很類似啊!如果你是一個(gè)尋求不同的人,Node.js當(dāng)然也滿足你,一直備受爭議的路由表上場了:
------我是另一個(gè)文件:routes.js--------
{ get: [ { path: '/', method: 'get', callbacks: [Object], keys: [], regexp: /^\/\/?$/i }, { path: '/user/:id', method: 'get', callbacks: [Object], keys: [{ name: 'id', optional: false }], regexp: /^\/user\/(?:([^\/]+?))\/?$/i } ], delete: [ { path: '/user/:id', method: 'delete', callbacks: [Object], keys: [Object], regexp: /^\/user\/(?:([^\/]+?))\/?$/i } ] }
定義這么一個(gè)對(duì)象,然后
var routes = require('./routes') app.use(app.router);//保留原來的 routes(app);//這個(gè)是新加的,將前者作為默認(rèn)路由
關(guān)于routes的更多內(nèi)容:Express官網(wǎng) 靠譜些,畢竟node.js最大的問題,就是資料的api都太舊了!
Node.js處理請求包括其它一些Io都是異步的,很快,所以對(duì)于性能,我是比較看好的,關(guān)于Ab測試的結(jié)果,還在測,總之我希望可以秒殺tomcat?。ú皇羌号叮。?/p>
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
分享題目:詳解用Node.js實(shí)現(xiàn)Restful風(fēng)格webservice
文章來源:http://chinadenli.net/article44/gjejee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站、、微信小程序、軟件開發(fā)、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)