Neutral Political Machine

    sequelize-restful

    0.4.3 • Public • Published

    sequelize-restful Build Status

    A connect module based on a fork of sequelize-restful that adds a one level of associative capability to a restful API. It also lets you define which model should be exposed through this restful API.

    Unmaintained

    This project is not actively developed/maintained. As a result of that, you won't be able to create issues any longer. I will happily merge pull requests, though. Please consider using epilogue.

    Usage

    var express   = require('express')
      , Sequelize = require('sequelize')
      , http      = require('http')
      , restful   = require('sequelize-restful')
      , sequelize = new Sequelize('database', 'username', 'password')
      , app       = express()
     
    // define all your models before the configure block
     
    app.configure(function() {
      app.use(restful(sequelize, { /* options */ }))
    })
     
    http.createServer(app).listen(app.get('port'), function(){
      console.log("Express server listening on port " + app.get('port'))
    })

    Options

    {
      // Parameter:   endpoint
      // Description: Define the path to the restful API.
      // Default:     '/api'
     
      endpoint: '/restful',
     
      // Parameter:   allowed
      // Description: Define which models will be exposed through the restful API
      // Default:     'new Array()' if it is an Empty array, all the models will be exposed by default
     
      allowed: new Array('Model0', 'Model1', 'Model2')
    }

    The API

    GET /api

    Returns a list of all declared models

    $ curl http://localhost:3000/api
    {
      "status": "success",
      "data": [
        {
          "name": "Tag",
          "tableName": "Tags"
        },
        {
          "name": "Image",
          "tableName": "Images"
        },
        {
          "name": "Project",
          "tableName": "Projects"
        }
      ]
    }

    HEAD /api/Tags

    Returns a description of a declared model

    $ curl -i -X HEAD http://localhost:3000/api/Tags

    The result of the request is part of the response headers! The header's name is Sequelize-Admin.

    {
      "status": "success",
      "data": {
        "name": "Tag",
        "tableName": "Tags",
        "attributes": {
          "title": "VARCHAR(255)",
          "id": {
            "type": "INTEGER",
            "allowNull": false,
            "primaryKey": true,
            "autoIncrement": true
          },
          "createdAt": {
            "type": "DATETIME",
            "allowNull": false
          },
          "updatedAt": {
            "type": "DATETIME",
            "allowNull": false
          },
          "ProjectId": {
            "type": "INTEGER"
          }
        }
      }
    }

    GET /api/Tags/1

    Returns the data of the Tag with the id 1.

    $ curl http://localhost:3000/api/Tags/1
    {
      "status": "success",
      "data": {
        "title": "foo",
        "id": 1,
        "createdAt": "2013-02-09T09:48:14.000Z",
        "updatedAt": "2013-02-09T09:48:14.000Z",
        "ProjectId": 1
      }
    }

    POST /api/Tags

    Creating a new instance of a model

    curl -d "title=hallo%20world" http://localhost:3000/api/Tags
    {
      "status": "success",
      "data": {
        "title": "hallo world",
        "id": 1,
        "createdAt": "2013-02-09T09:48:14.000Z",
        "updatedAt": "2013-02-09T09:48:14.000Z"
      }
    }

    PUT /api/Tags/1

    Updating an already existing instance of a model

    curl -d "title=fnord" -X PUT http://localhost:3000/api/Tags/1

    It returns the updated record

    {
      "status": "success",
      "data": {
        "title": "fnord",
        "id": 1,
        "createdAt": "2013-02-14T19:52:04.000Z",
        "updatedAt": "2013-02-14T19:53:30.066Z",
        "ProjectId": 1
      }
    }

    PATCH /api/Tags/1

    Updating an already existing instance of a model

    curl -d "title=fnord" -X PATCH http://localhost:3000/api/Tags/1

    Is processed and returns updated record equivalent to PUT /api/Tags/1.

    DELETE /api/Tags/1

    Deleting an existing instance of a model

    curl -i -X DELETE http://localhost:3000/admin/api/Tags/3
    {
      "status": "success",
      "data": {}
    }

    The API for Associations

    GET /api/Projects/1/Tags

    Returns all the instance of 'associated_dao_factory' associated to the instance 1 of 'dao_factory'

    curl -i -X GET http://localhost:3000/admin/api/Projects/1/Tags
     
    {
      "status": "success",
      "data": {
        "title": "foo",
        "id": 1,
        "createdAt": "2013-02-09T09:48:14.000Z",
        "updatedAt": "2013-02-09T09:48:14.000Z",
        "ProjectId": 1
      }
    }

    DELETE /api/Photo/1/Photographer

    Deleting an existing association for 1:1 or N:1 association.

    curl -i -X DELETE http://localhost:3000/admin/api/Photo/1/Photographer
    {
      "status": "success",
      "data": {}
    }

    DELETE /api/Projects/1/Tags/1

    Deleting an existing association between instances

    curl -i -X DELETE http://localhost:3000/admin/api/Projects/1/Tags/3
    {
      "status": "success",
      "data": {}
    }

    Keywords

    none

    Install

    npm i sequelize-restful

    DownloadsWeekly Downloads

    17

    Version

    0.4.3

    License

    MIT

    Last publish

    Collaborators

    • sdepold