今天给小伙伴们分享一个玩具—-OData, 能极大减轻服务端开发的工作量. 对于他的实现, 博客园有童鞋介绍过(见:这里1,这里2). 微软的WCF Data Service即采用的该协议来进行通信, ASP.NET WEB API目前也对OData进行了支持.
我在以前的.NET项目中也一直采用OData进行数据交换. 最近转去进行NodeJS的开发, 为了减少学习成本, 于是便有了noda-odata–一个基于 OData 协议的 RESTful API 库. 相较于Node Express, 它能使你更容易的开发和维护您的API. 其次是让你在NodeJS里面还能缅怀一下微软的东西:)
OData最大的特点就是他完全暴露的数据接口, 服务端只需要几行代码就能让客户端实现随心所欲的查询, 您可以试试:
很酷炫, 是吗? 你还可以任意组合查询条件, 以实现复杂查询. 比如:
下面让我们看看实现它需要多少代码.
首先你需要有NodeJS环境, 点击此处安装
node-odata是需要运行在express之上的, 所以您还需要安装express以及其依赖项. (express是一个nodeJS的主流web开发框架)
npm install express --save
npm install body-parser
现在您可以安装node-odata
npm install node-odata
创建文件server.js, 输入以下代码:
var express = require('express'),
odata = require('node-odata');
bodyParser = require('body-parser')
var app = express();
app.use(bodyParser.urlencoded());
app.use(express.query());
odata.set('app', app);
odata.set('db', 'mongodb://localhost/my-app');
odata.resources.register({ url: '/books', model: { title: String, price: Number } });
app.listen(3000);
现在运行 node server
您即可访问http://localhost:3000/odata/books, 您可以使用以下方式亲自试试:
GET /odata/books
GET /odata/books/:id
POST /odata/books
PUT /odata/books/:id
DELETE /odata/books/:id
该项目完全开源并且基于MIT协议, 其源码托管于github node-odata, 喜欢的朋友希望能star一下:)
我使用node-odata构建了我自己个人站点的服务端, 地址戳这里.
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.