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

詳解用Node.js實現(xiàn)Restful風格webservice

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

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

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

Java曾經是一個Xml配置文件橫行的世界,現(xiàn)在是各種Annotation(注解)亂入的世界,雖然注解的侵入性比較小,但是加了一摞注解的類也讓人傷神,尤其是各框架混雜的注解,好在各大框架還是比較自覺的,各種負責不同的層,所以還不會導致各種注解的混亂。好了,那么下面歡迎來到,沒有注解,也沒用xml的世界:

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

var express = require('express') //加載模塊 
var app = express() //實例化之 
 
var map = {"1":{id:1,name:"test"},"2":{id:2,name:"test"}} //定義一個集合資源,key為字符串完全是模仿java MAP<T,E>,否則誰會這么去寫個hash??! 
 
app.get('/devices',function(req, res){ //Restful Get方法,查找整個集合資源 
  res.set({'Content-Type':'text/json','Encodeing':'utf8'}); 
  res.send(map) 
}) 
app.get('/devices/:id',function(req, res){ //Restful Get方法,查找一個單一資源 
  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)建一個單一資源 
  res.set({'Content-Type':'text/json','Encodeing':'utf8'}); 
  map[req.body.id] = req.body 
  res.send({status:"success",url:"/devices/"+req.body.id}) //id 一般由數據庫產生 
}) 
app.put('/devices/:id', express.bodyParser(), function(req, res){ //Restful Put方法,更新一個單一資源 
  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方法,刪除一個單一資源 
  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, 代碼中唯一讓人詫異的應該是delete map[req.param('id')],我們知道js的map是一個Object,或者Object是一個map,,delete object.property,可以刪除這個屬性,但是delete Object[Property]也可以把這個屬性給干掉,delete o.x 也可以寫作 delete o["x"],兩者效果相同 關于delete請觀看:ECMAScript delete

系不系很方便哈!和那些XXX框架些的代碼很類似啊!如果你是一個尋求不同的人,Node.js當然也滿足你,一直備受爭議的路由表上場了:

------我是另一個文件: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 } ] } 

定義這么一個對象,然后

var routes = require('./routes') 
app.use(app.router);//保留原來的 
routes(app);//這個是新加的,將前者作為默認路由 

關于routes的更多內容:Express官網   靠譜些,畢竟node.js最大的問題,就是資料的api都太舊了!

Node.js處理請求包括其它一些Io都是異步的,很快,所以對于性能,我是比較看好的,關于Ab測試的結果,還在測,總之我希望可以秒殺tomcat!(不是集群哦?。?/p>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Node.js上傳文件功能之服務端如何獲取文件上傳進度

    Node.js上傳文件功能之服務端如何獲取文件上傳進度

    這篇文章主要介紹如何利用progress-stream獲取文件上傳進度,以及該組件使用過程中的注意事項
    2018-02-02
  • Nodejs對postgresql基本操作的封裝方法

    Nodejs對postgresql基本操作的封裝方法

    今天小編就為大家分享一篇Nodejs對postgresql基本操作的封裝方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Nodejs 發(fā)送Post請求功能(發(fā)短信驗證碼例子)

    Nodejs 發(fā)送Post請求功能(發(fā)短信驗證碼例子)

    這篇文章主要介紹了Nodejs 發(fā)送Post請求功能(發(fā)短信驗證碼例子),需要的朋友可以參考下
    2017-02-02
  • npm install -g 遇到權限問題解析

    npm install -g 遇到權限問題解析

    這篇文章主要為大家介紹了npm install -g 遇到權限問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • 在Node.js中實現(xiàn)視頻收藏功能

    在Node.js中實現(xiàn)視頻收藏功能

    在構建視頻分享平臺時,視頻的收藏功能是用戶互動的重要組成部分,本文將介紹如何在Node.js應用中實現(xiàn)視頻收藏功能,包括數據模型的創(chuàng)建、業(yè)務邏輯的實現(xiàn)以及接口的驗證測試,需要的朋友可以參考下
    2024-04-04
  • NestJS中集成TypeORM進行數據庫操作

    NestJS中集成TypeORM進行數據庫操作

    本文深入探討了如何在NestJS中集成TypeORM進行數據庫操作,包括TypeORM的配置和集成、實體設計和關系映射、Repository模式的應用、事務處理方案、數據庫遷移管理、性能優(yōu)化策略
    2024-12-12
  • NodeJs 實現(xiàn)簡單WebSocket即時通訊的示例代碼

    NodeJs 實現(xiàn)簡單WebSocket即時通訊的示例代碼

    這篇文章主要介紹了NodeJs 實現(xiàn)簡單WebSocket即時通訊的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • node強緩存和協(xié)商緩存實戰(zhàn)示例

    node強緩存和協(xié)商緩存實戰(zhàn)示例

    這篇文章主要為大家介紹了node強緩存和協(xié)商緩存實戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • node+koa+canvas繪制出貨單、收據票據的方法

    node+koa+canvas繪制出貨單、收據票據的方法

    在生成票據需求中,我們會想到前端生成或者后端生成返回圖片地址訪問兩個方法,前端生成則不需要調用接口,而后端是在完成整個流程時就進行生成然后把上傳的地址保存數據庫,這篇文章主要介紹了node+koa+canvas繪制出貨單,收據,票據,需要的朋友可以參考下
    2022-09-09
  • kafka調試中遇到Connection to node -1 could not be established. Broker may not be available.

    kafka調試中遇到Connection to node -1 could not be established. Br

    這篇文章主要介紹了kafka調試中遇到Connection to node -1 could not be established. Broker may not be available的解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-09-09

最新評論