exp-rest
v0.1.1
Published
REST API for Express and Bookshelf.js
Downloads
6
Maintainers
Readme
ExpREST
ExpREST helps you build RESTful API with Express and Bookshelf.js. Easily create a flexible REST interface for your models, and extend these with your application specific logic.
Try on example - exprest-example
Installation
$ npm install exp-rest --save
Quick Start
Lets say you have a Bookshelf model called User
let User = bookshelf.Model.extend({
tableName: 'users'
});
To create CRUD endpoints for your models you just need to pass resources array to ExpREST
let app = require('express')();
let exprest = require('exp-rest');
app.use(exprest({resources: [User]}));
app.listen(3000);
And you gets these endpoints
| Method | URL | Action |
| :----- | :------------| :-----------------------|
| GET | /users
| Get list of users |
| GET | /users/:id
| Get a user by id |
| POST | /users
| Create a new user |
| PUT | /users/:id
| Update an existing user |
| DELETE | /users/:id
| Delete an existing user |
That's it! :sunglasses:
Documentation
Configuration
Endpoints
Get list of entities
GET
/entities
Listing resources support filtering, searching, sorting, and pagination.
Get an entity by identifier
GET
/entities/:identifier
Create a new entity
POST
/entities
Update an existing entity
PUT
/entities/:identifier
Delete an existing entity
DELETE
/entities/:identifier
Hooks
Hooks let you extend and override default endpoint behaviors.
before
hooks are executed before the default database action, such as fetch, save, or delete.
after
hooks are executed after all database actions are complete.
Hook names are generated based on endpoint configurations. This list is based on a /users
endpoint where itemName = user
and collectionName = users
| Hook Name | Request | Arguments |
| :-------------------------| :------------------------ | :------------------------------------ |
| beforeGetUsers
| GET /users
| [req, res, userModel] |
| afterGetUsers
| GET /users
| [req, res, userCollection] |
| beforeGetUser
| GET /users/:id
| [req, res, userModel] |
| afterGetUser
| GET /users/:id
| [req, res, userModel] |
| beforeCreateUser
| POST /users
| [req, res, userModel] |
| afterCreateUser
| POST /users
| [req, res, userModel] |
| beforeUpdateUser
| PUT /users/:id
| [req, res, userModel] |
| afterUpdateUser
| PUT /users/:id
| [req, res, userModel] |
| beforeDeleteUser
| DELETE /users/:id
| [req, res, userModel] |
| afterDeleteUser
| DELETE /users/:id
| [req, res, userModel] |
| beforeGetRelatedThings
| GET /users/:id/things
| [req, res, thingModel] |
| afterGetRelatedThings
| GET /users/:id/things
| [req, res, thingsCollection] |
| beforeRelatedThing
| POST /users/:id/things
| [req, res, userModel] |
| afterRelateThing
| POST /users/:id/things
| [req, res, userModel, thingModel] |
req
and res
are an Express request and response
userModel
is an instance of a bookshelf model
userCollection
is an instance of a bookshelf collection