OData, 相信身爲 .NET 程序員應該不爲陌生, 尤爲是它的實現: ASP.NET WEB API OData. 對於 OData, 官網上對其的定義是html
OData - the best way to REST An open protocol to allow the creation and consumption of queryable and interoperable RESTful APIs in a simple and standard way.
可見 OData 是一個基於 REST 的 數據協議. OData 全名"開放數據協議(Open Data Protocol)", 是一個用於 web 的數據訪問協議. OData 提供了一個統一的風格來來查詢和維護數據集. 這裏有一篇博文描述了 OData 想要解決的問題: 關於 OData 協議.node
node-odata 是徹底遵循 OData V4 協議實現的一套 OData REST API 框架, 它基於 NodeJS, 使用 ECMAScript 6 編寫, 發佈於 npm.git
node-odata 同時結合了 OData 強大的數據查詢能力以及 NodeJS 支持高併發的優點, 使開發者能快速的建立一個高性能並支持各類複雜查詢的 REST API.程序員
在常規的 REST 框架中, 其只提供了 REST 風格的 CRUD 操做. 開發者不得不對每個資源都手動添加一些公共功能, 如排序/分頁等. 甚至在多數複雜的業務場景中, 開發者須要一次次根據業務需求定製出特定的複雜查詢 API, 這都極大的浪費了人力資源. OData數據訪問協議很好的解決了這一問題. 它定義了$filter, $orderby, $select等一系列關鍵字來進行統一的篩選, 排序, 分頁等操做. 極大的減輕了開發者的負擔, 提升了生產力.github
反觀 OData 社區, 目前 node-odata 是惟一一款基於 NodeJS 的服務端 OData 框架. 與其它編譯型語言的 OData 實現相比, 它運行更加高效, 部署更加方便, 編寫更加簡單 (4行代碼便可初始化一個 OData 服務).web
OData最大的特色就是他徹底暴露的數據接口, 服務端只須要幾行代碼就能讓客戶端實現爲所欲爲的查詢, 下面以一個圖書 API 爲例:mongodb
而實現這一切功能, 只須要 4 行代碼.npm
安裝完成並啓動 MongoDB 以後, 您能夠開始安裝 node-odata併發
$ npm install node-odata
建立文件 server.js, 輸入如下代碼:
var odata = require('node-odata'); var server = odata('mongodb://localhost/my-app'); server.resource('books', { title: String, price: Number }); server.listen(3000);
保存並運行
$ node server
您便可訪問 http://localhost:3000/books, 您可使用如下方式親自試試:
GET /books GET /books/:id POST /books PUT /books/:id DELETE /books/:id
完整的 API 文檔見 這裏.
我使用 node-odata 構建了我本身我的站點: zackyang.com, 源碼 請戳這裏.
該項目基於 MIT 協議, 其源碼託管於 github, 歡迎點贊.