sequelize-restful
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 = Sequelize = http = restful = sequelize = 'database' 'username' 'password' app = // define all your models before the configure block app http
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: '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": {}