欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解用Node.js實(shí)現(xiàn)Restful風(fēng)格webservice

 更新時(shí)間:2017年09月29日 10:19:46   作者:huangxy10  
本篇文章主要介紹了詳解用Node.js實(shí)現(xiàn)Restful風(fēng)格webservice,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

Restful風(fēng)格的WebService正在漸漸取代傳統(tǒng)的SOAP, Java 也有很多Restful的框架,很方便簡(jiǎn)潔,Jersey,restlet,甚至SpringMVC也可以,不得不說(shuō)Rest讓人從Web轉(zhuǎn)型到WebService更容易和方便,當(dāng)然深入Restful的理論還是發(fā)現(xiàn)比較復(fù)雜的,但是,開(kāi)發(fā)和理論并不需要那么的貼合,有時(shí)候偽Restful更直觀(guān),靠譜些。

但是,作為很帥的Node.js怎么可以不和同樣帥氣的Restful相結(jié)合呢???對(duì)于我們這種無(wú)視理論的開(kāi)發(fā)者來(lái)說(shuō),Restful不就是url的規(guī)范+HTTP method的規(guī)范而已嘛,所以Node這種很自由的技術(shù)來(lái)說(shuō),同樣實(shí)現(xiàn)restful變的非常正常。不需要什么框架,但是我還是用了Express,Express只是對(duì)原生的http模塊的一層封裝而已,不要那么計(jì)較嘛!

Java曾經(jīng)是一個(gè)Xml配置文件橫行的世界,現(xiàn)在是各種Annotation(注解)亂入的世界,雖然注解的侵入性比較小,但是加了一摞注解的類(lèi)也讓人傷神,尤其是各框架混雜的注解,好在各大框架還是比較自覺(jué)的,各種負(fù)責(zé)不同的層,所以還不會(huì)導(dǎo)致各種注解的混亂。好了,那么下面歡迎來(lái)到,沒(méi)有注解,也沒(méi)用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>,否則誰(shuí)會(huì)這么去寫(xiě)個(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ù)庫(kù)產(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)聽(tīng)8888端口,沒(méi)辦法,總不好搶了tomcat的8080吧! 

---------我是測(cè)試-----------

用Postman測(cè)試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 也可以寫(xiě)作 delete o["x"],兩者效果相同 關(guān)于delete請(qǐng)觀(guān)看:ECMAScript delete!

系不系很方便哈!和那些XXX框架些的代碼很類(lèi)似??!如果你是一個(gè)尋求不同的人,Node.js當(dāng)然也滿(mǎn)足你,一直備受爭(zhēng)議的路由表上場(chǎ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);//保留原來(lái)的 
routes(app);//這個(gè)是新加的,將前者作為默認(rèn)路由 

關(guān)于routes的更多內(nèi)容:Express官網(wǎng)   靠譜些,畢竟node.js最大的問(wèn)題,就是資料的api都太舊了!

Node.js處理請(qǐng)求包括其它一些Io都是異步的,很快,所以對(duì)于性能,我是比較看好的,關(guān)于Ab測(cè)試的結(jié)果,還在測(cè),總之我希望可以秒殺tomcat?。ú皇羌号叮。?/p>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • NodeJS如何實(shí)現(xiàn)同步的方法示例

    NodeJS如何實(shí)現(xiàn)同步的方法示例

    nodeJS最大的特點(diǎn)就是其異步操作,下面這篇文章主要給大家介紹了關(guān)于NodeJS如何實(shí)現(xiàn)同步的方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 手把手教你實(shí)現(xiàn) Promise的使用方法

    手把手教你實(shí)現(xiàn) Promise的使用方法

    這篇文章主要介紹了手把手教你實(shí)現(xiàn) Promise的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • nodejs與瀏覽器中全局對(duì)象區(qū)別點(diǎn)總結(jié)

    nodejs與瀏覽器中全局對(duì)象區(qū)別點(diǎn)總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于nodejs與瀏覽器中全局對(duì)象區(qū)別點(diǎn)總結(jié)內(nèi)容,對(duì)此有需要的朋友們可以學(xué)習(xí)下。
    2021-12-12
  • node.js中的fs.chmod方法使用說(shuō)明

    node.js中的fs.chmod方法使用說(shuō)明

    這篇文章主要介紹了node.js中的fs.chmod方法使用說(shuō)明,本文介紹了fs.chmod方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 基于node.js實(shí)現(xiàn)爬蟲(chóng)的講解

    基于node.js實(shí)現(xiàn)爬蟲(chóng)的講解

    今天小編就為大家分享一篇關(guān)于基于node.js實(shí)現(xiàn)爬蟲(chóng)的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • websocket結(jié)合node.js實(shí)現(xiàn)雙向通信的示例代碼

    websocket結(jié)合node.js實(shí)現(xiàn)雙向通信的示例代碼

    本文主要介紹了websocket結(jié)合node.js實(shí)現(xiàn)雙向通信的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 關(guān)于Node.js的events.EventEmitter用法介紹

    關(guān)于Node.js的events.EventEmitter用法介紹

    本篇文章主要介紹了關(guān)于Node.js的events.EventEmitter用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • Node.js Streams文件讀寫(xiě)操作詳解

    Node.js Streams文件讀寫(xiě)操作詳解

    如果你在處理應(yīng)用中 I/O 相關(guān)的操作,你可以利用 Node.js 中的流(stream),這篇文章主要為大家詳細(xì)介紹了Node.js Streams文件讀寫(xiě)操作,感興趣的小伙伴們可以參考一下
    2016-07-07
  • node.js實(shí)現(xiàn)http服務(wù)器與瀏覽器之間的內(nèi)容緩存操作示例

    node.js實(shí)現(xiàn)http服務(wù)器與瀏覽器之間的內(nèi)容緩存操作示例

    這篇文章主要介紹了node.js實(shí)現(xiàn)http服務(wù)器與瀏覽器之間的內(nèi)容緩存操作,結(jié)合實(shí)例形式分析了node.js http服務(wù)器與瀏覽器之間的內(nèi)容緩存原理與具體實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2020-02-02
  • 淺析Node.js:DNS模塊的使用

    淺析Node.js:DNS模塊的使用

    本篇文章主要介紹了Node.js:DNS模塊的使用,DNS模塊包涵有關(guān)DNS查詢(xún)和操作的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-11-11

最新評(píng)論