日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

NodeJS学习笔记: RESTful —— 为本系列做个小结

發布時間:2025/7/14 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NodeJS学习笔记: RESTful —— 为本系列做个小结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

本人不是技術專家,該筆記只是從使用語言進行開發的層面上記錄一些體會,不包含也不想嘗試從源碼或者更深的層次去討論語言本身的優劣。文章內容是筆者的個人感悟,既不保證正確性,也不保證別人能看懂。

這是該筆記的第三篇,用來對最近的NodeJS學習做一個小結,短期內恐怕我不會再更新它了。

第一篇在這里 NodeJS學習筆記: require, exports 和 module.exports 的初印象
第二篇在這里 NodeJS學習筆記: 簡述Express的中間件multer的使用

先談一下本次學習的收獲:
1- 對于非阻塞模式的開發有了相應的意識,即從覺得很難讀懂源碼到現在覺得一切本該如此,這說明我的思維方式改善了。
2- NodeJS是很有趣的東西,但是暫時不適于開發商業的應用。誠然,NodeJS與Express都提供了較好的技術支持與規范的源碼,但是太多來自npm的模塊做不到這一點,也就是說如果不去更新依賴的資源那么可能存在未知的bug,而更新的代價則是發生各種錯誤。
3- 綜上,我覺得angular之類的技術在相當的一段時期內更有活力,至于后端我還是暫時要回到PHP領域。哦~PHP7

引子

學習NodeJS的原因是我在嘗試基于MeanJS框架的基礎上進行開發,所以我要先熟悉NodeJS, ExpressJS 和 MongoDB。當時使用的MeanJS框架是0.4.2,現在已經有了0.5.beta了。其實我大約半年以前就接觸過這個框架的更早期版本,大致的感覺如下:

早期版本

在前端和后端分別實現了mvc架構,不錯的封裝,但是使用上稍有不便。目錄結構類似:

/app/modules/moduleA (比如articles)/controllers/models/services... /public/modules... (和上面差不多,不廢話了)

0.4.2

結構改善了,看起來舒服多了

/modules/moduleA (比如articles) /client.../server.../test...

當然實際開發的時候太多的近似名稱也是挺讓人頭疼了。

0.5.beta

前端貌似做了一些優化,后端沒什么太多的變動。以前的示例代碼只有oauth, users (包含頭像上傳), menu 和 articles,現在又增加了chat。新手其實可以fork它從而更快的入手。

正文

我覺得單獨評價RESTful的話并沒有什么價值,必須考慮和angularJS或者app開發結合的情況下。雖然如Mongo之類的數據庫實現了RESTful接口,但是我覺得沒人喜歡從瀏覽器端直接發起此類請求。
對于單純的RESTful,我覺得以下就夠了:

var policy = {invokeRolesPolicies: function(){},isAllowed: function(req, res, next){var thePolicy = false;if (req.model) {if (req.model.policy) {thePolicy = req.model.policy;} else {thePolicy = require('default.restful.policy.js');}thePolicy.invokeRolesPolicies();retuen thePolicy.isAllowed(req, res, next);}return next();} }; var RESTController= {this.save = function(req, res){};this.delete= function(req, res){};this.read = function(req, res){};this.list = function(req, res){};this.loadModel = function(req, res, next, modelName){req.model = moogoose.model(modelName);next();};this.loadData = function(req, res, next, dataId){req.data = req.model.findById(dataId);next();}; } app.route('/rest/:model').all(policy.isAllowed).get(RESTController.list).post(RESTController.save) ; app.route('/rest/:model/:id').all(policy.isAllowed).get(RESTController.read).put(RESTController.save).delete(RESTController.delete) ; app.param('model', RESTController.loadModel); app.param('id', RESTController.loadData);

然后只要增加model來制定數據有效性規則和規定model對應的訪問規則就可以了。

尾聲

抽象RESTful框架其實是很簡單的,一個針對RESTful請求的后端框架應該包括以下的部分:
1-安全驗證:確認訪問者的身份保證安全的訪問
2-數據讀寫:包括數據庫部分和緩存部分
3-文件處理:能夠對文件上傳進行處理
4-易于擴展的接口:比如socket支持,現在用來越多的地方用到了;oauth,網上支付接口等。
1和2是必不可少的。

好了,就這樣,我要回去研究php了。

總結

以上是生活随笔為你收集整理的NodeJS学习笔记: RESTful —— 为本系列做个小结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。