Create awesome REST APIs abide by OData Protocol v4. Its purpose is to easier to creating APIs, make you more focus on business logic.
var odata = require('node-odata');
var server = odata('mongodb://localhost/my-app');
server.resource('books', {
title: String,
price: Number
});
server.listen(3000);
Registers the following routes:
GET /books
GET /books(:id)
POST /books
PUT /books(:id)
DELETE /books(:id)
Use the following OData query:
Example
GET /books?$select=id, title
GET /books?$top=3&$skip=2
GET /books?$orderby=price desc
GET /books?$filter=price gt 10
GET ...
The odata constructor takes 3 arguments: odata(<mongoURL>, <dbPrefix>, <options>);
The options object currently only supports one parameter: expressRequestLimit
, this will be parsed to the express middelware as the "limit" option, which allows for configuring express to support larger requests. It can be either a number or a string like "50kb", 20mb", etc.
node-odata is currently at an beta stage, it is stable but not 100% feature complete. node-odata is written by ECMAScript 6 then compiled by babel. It currently have to dependent on MongoDB yet. The current target is to add more features (eg. $metadata) and make to support other database. (eg. MySQL, PostgreSQL).
npm install node-odata
Live demo and try it:
- GET [/book?$select=id, title](http://books.zackyang.com/book?$select=id, title)
- GET /book?$top=3&$skip=2
- GET [/book?$orderby=price desc](http://books.zackyang.com/book?$orderby=price desc)
- GET [/book?$filter=price gt 10](http://books.zackyang.com/book?$filter=price gt 10)
- Full CRUD Support
- $count
- $filter
- Comparison Operators
- eq
- ne
- lt
- le
- gt
- ge
- Logical Operators
- and
- or
- not
- Comparison Operators
- has
- String Functions
- indexof
- contains
- endswith
- startswith
- length
- substring
- tolower
- toupper
- trim
- concat
- Arithmetic Operators
- add
- sub
- mul
- div
- mod
- Date Functions
- year
- month
- day
- hour
- minute
- second
- fractionalseconds
- date
- time
- totaloffsetminutes
- now
- mindatetime
- maxdatetime
- Math Functions
- round
- floor
- ceiling
- Comparison Operators
- $select
- $top
- $skip
- $orderby
- $expand
- $metadata generation (Nonstandard)
We always welcome contributions to help make node-odata better. Please feel free to contribute to this project.
node-odata is licensed under the MIT license. See LICENSE for more information.