node-odata: ASP.NET WEB API OData的替代品

什麼是 OData 協議?

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?

node-odata 是徹底遵循 OData V4 協議實現的一套 OData REST API 框架, 它基於 NodeJS, 使用 ECMAScript 6 編寫, 發佈於 npm.git

爲何使用 node-odata?

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

  1. 查詢全部圖書, 並只返回標題以及做者.
  2. 按價格對圖書進行排序, 並返回第 3 ~ 5 條記錄.
  3. 查詢價格高於 $40 的圖書.
  4. 很酷炫, 對嗎? 也許, 你須要更復雜的查詢組合, 好比: 查詢標題中含有 'XML', 價格小於 $30, 而且按價格排序返回最便宜的一本的標題和價格.

而實現這一切功能, 只須要 4 行代碼.npm

快速開始

首先你須要安裝 NodeJS 以及 MongoDB.api

安裝完成並啓動 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, 源碼 請戳這裏.

License

該項目基於 MIT 協議, 其源碼託管於 github, 歡迎點贊.

相關文章
相關標籤/搜索