node-document-api

HTTP API endpoint/middleware for `node-document` ODM for Node.js.

npm install node-document-api
4 downloads in the last month

NODE-DOCUMENT-API preview Build Status

HTTP API endpoint/middleware for node-document ODM for Node.js.

About

Unified HTTP API for write/read data to/from differen kinds of storages/databases.

HTTP API

POST

  • (:route)/:type/:id

      HTTP POST /post/1
        {
          "title": "Post 1",
          "description": "Lorem ipsum..."
        }
    
      /*
        200 OK
      */
      [
        {
          "_type": "post",
          "_id": 1,
          "title": "Post 1",
          "description": "Lorem ipsum..."
        }
      ]
    
  • (:route)/:type/:id,...,:id

      HTTP POST /post/1,2,3
        [
          {
            "title": "Post 1",
            "description": "Lorem ipsum..."
          },
          {
            "title": "Post 2",
            "description": "Lorem ipsum..."
          },
          {
            "title": "Post 3",
            "description": "Lorem ipsum..."
          }
        ]
    
      /*
        200 OK
      */
      [
        true,
        true,
        true
      ]
    

PUT

  • (:route)/:type/:id

      HTTP PUT /post/1
        {
          "title": "Post 1",
          "description": "Lorem ipsum...",
          "extra": true
        }
    
      /*
        200 OK
      */
      [
        {
          "_type": "post",
          "_id": 1,
          "title": "Post 1",
          "description": "Lorem ipsum...",
          "extra": true
        }
      ]
    
  • (:route)/:type/:id,...,:id

      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
          }
        ]
    
      /*
        200 OK
      */
      [
        true,
        true,
        true
      ]
    

GET

  • (:route)/:type/:id

      HTTP GET /post/1
    
      /*
        200 OK
      */
      [
        {
          "_type": "post",
          "_id": 1,
          "title": "Post 1",
          "description": "Lorem ipsum..."
        }
      ]
    
  • (:route)/:type/:id,...,:id

      HTTP GET /post/1,2,3
    
      /*
        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

      HTTP DELETE /post/1
    
      /*
        200 OK
      */
      [
        {
          "_type": "post",
          "_id": 1,
          "title": "Post 1",
          "description": "Lorem ipsum..."
        }
      ]
    
  • (:route)/:type/:id,...,:id

      HTTP DELETE /post/1,2,3
    
      /*
        200 OK
      */
      [
        false,
        true,
        true
      ]
    

Example

Using Connect.js:

  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:

  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

  $ npm install node-document-api

Test

Local tests:

  $ make test

License

Released under the MIT license.

Copyright (c) Jonas Grimfelt

npm loves you