https://github.com/grimen/node-document-api
HTTP API endpoint/middleware for `node-document` ODM for Node.js.
https://github.com/grimen/node-document-api
Last synced: 4 days ago
JSON representation
HTTP API endpoint/middleware for `node-document` ODM for Node.js.
- Host: GitHub
- URL: https://github.com/grimen/node-document-api
- Owner: grimen
- License: mit
- Created: 2013-05-06T03:56:26.000Z (about 13 years ago)
- Default Branch: master
- Last Pushed: 2013-12-07T19:49:50.000Z (over 12 years ago)
- Last Synced: 2026-02-20T02:04:28.929Z (4 months ago)
- Language: JavaScript
- Homepage: https://npmjs.org/package/node-document-api
- Size: 186 KB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: MIT-LICENSE
Awesome Lists containing this project
README
# NODE-DOCUMENT-API *preview* [](http://travis-ci.org/grimen/node-document-api)
**HTTP API** endpoint/middleware for [node-document](https://github.com/grimen/node-document) ODM for Node.js.
Work in progress; see **[TODO](https://github.com/grimen/node-document-api/blob/master/TODO)**.
## About
Unified HTTP API for write/read data to/from differen kinds of storages/databases.
## HTTP API
### `POST`
* `(:route)/:type`
```text
HTTP POST /post
{
"title": "Post",
"description": "Lorem ipsum..."
}
```
```javascript
/*
200 OK
*/
[
{
"_type": "post",
"_id": "eaf56300-7785-4c9a-a103-6895f873bff7",
"title": "Post",
"description": "Lorem ipsum..."
}
]
```
* `(:route)/:type/:id`
```text
HTTP POST /post/1
{
"title": "Post 1",
"description": "Lorem ipsum..."
}
```
```javascript
/*
200 OK
*/
[
{
"_type": "post",
"_id": 1,
"title": "Post 1",
"description": "Lorem ipsum..."
}
]
```
* `(:route)/:type/:id,...,:id`
```text
HTTP POST /post/1,2,3
[
{
"title": "Post 1",
"description": "Lorem ipsum..."
},
{
"title": "Post 2",
"description": "Lorem ipsum..."
},
{
"title": "Post 3",
"description": "Lorem ipsum..."
}
]
```
```javascript
/*
200 OK
*/
[
{
"_type": "post",
"_id": 1,
"title": "Post 1",
"description": "Lorem ipsum..."
},
{
"_type": "post",
"_id": 2,
"title": "Post 2",
"description": "Lorem ipsum..."
},
{
"_type": "post",
"_id": 2,
"title": "Post 2",
"description": "Lorem ipsum..."
}
]
```
### `PUT`
* `(:route)/:type/:id`
```text
HTTP PUT /post/1
{
"title": "Post 1",
"description": "Lorem ipsum...",
"extra": true
}
```
```javascript
/*
200 OK
*/
[
{
"_type": "post",
"_id": 1,
"title": "Post 1",
"description": "Lorem ipsum...",
"extra": true
}
]
```
* `(:route)/:type/:id,...,:id`
```text
HTTP PUT /post/1,2,3
[
{
"title": "Post 1",
"description": "Lorem ipsum...",
"extra": true
},
{
"title": "Post 2",
"description": "Lorem ipsum...",
"extra": true
},
{
"title": "Post 3",
"description": "Lorem ipsum...",
"extra": true
}
]
```
```javascript
/*
200 OK
*/
[
{
"_type": "post",
"_id": 1,
"title": "Post 1",
"description": "Lorem ipsum..."
},
{
"_type": "post",
"_id": 2,
"title": "Post 2",
"description": "Lorem ipsum..."
},
{
"_type": "post",
"_id": 2,
"title": "Post 2",
"description": "Lorem ipsum..."
}
]
```
### `GET`
* `(:route)/:type/:id`
```text
HTTP GET /post/1
```
```javascript
/*
200 OK
*/
[
{
"_type": "post",
"_id": 1,
"title": "Post 1",
"description": "Lorem ipsum..."
}
]
```
* `(:route)/:type/:id,...,:id`
```text
HTTP GET /post/1,2,3
```
```javascript
/*
200 OK
*/
[
{
"_type": "post",
"_id": 1,
"title": "Post 1",
"description": "Lorem ipsum..."
},
{
"_type": "post",
"_id": 2,
"title": "Post 2",
"description": "Lorem ipsum..."
},
{
"_type": "post",
"_id": 3,
"title": "Post 3",
"description": "Lorem ipsum..."
}
]
```
### `DELETE`
* `(:route)/:type/:id`
```text
HTTP DELETE /post/1
```
```javascript
/*
200 OK
*/
[
{
"_type": "post",
"_id": 1,
"title": "Post 1",
"description": "Lorem ipsum..."
}
]
```
* `(:route)/:type/:id,...,:id`
```text
HTTP DELETE /post/1,2,3
```
```javascript
/*
200 OK
*/
[
false,
true,
true
]
```
## Example
Using [Connect.js](https://github.com/senchalabs/connect):
```javascript
var connect = require('connect')
var http = require('http');
var Document = require('node-document');
var API = require('node-document-api');
var Post = Document('Post');
Post.api = API({route: '/api'});
var app = connect();
app
.use(Post.api)
.use(function(req, res) {
res.end("Hello world!");
});
http.createServer(app).listen(3000, function() {
console.log('[node-document-api/examples/connect-example.js]: Listening on port %s', 3000);
});
```
Using [Express.js](https://github.com/visionmedia/express):
```javascript
var express = require('express')
var Document = require('node-document');
var API = require('node-document-api');
var Post = Document('Post');
Post.api = API({route: '/api'});
var app = express();
app
.use(Post.api)
.use(function(req, res) {
res.end("Hello world!");
});
app.listen(3000, function() {
console.log('[node-document-api/examples/express-example.js]: Listening on port %s', 3000);
});
```
## Installation
```shell
$ npm install node-document-api
```
## Test
**Local tests:**
```shell
$ make test
```
## License
Released under the MIT license.
Copyright (c) [Jonas Grimfelt](http://github.com/grimen)
[](https://bitdeli.com/free "Bitdeli Badge")