0.1.1 • Published 7 years ago

exp-rest v0.1.1

Weekly downloads
1
License
MIT
Repository
github
Last release
7 years ago

ExpREST

npm Libraries.io for GitHub license

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

MethodURLAction
GET/usersGet list of users
GET/users/:idGet a user by id
POST/usersCreate a new user
PUT/users/:idUpdate an existing user
DELETE/users/:idDelete 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 NameRequestArguments
beforeGetUsersGET /usersreq, res, userModel
afterGetUsersGET /usersreq, res, userCollection
beforeGetUserGET /users/:idreq, res, userModel
afterGetUserGET /users/:idreq, res, userModel
beforeCreateUserPOST /usersreq, res, userModel
afterCreateUserPOST /usersreq, res, userModel
beforeUpdateUserPUT /users/:idreq, res, userModel
afterUpdateUserPUT /users/:idreq, res, userModel
beforeDeleteUserDELETE /users/:idreq, res, userModel
afterDeleteUserDELETE /users/:idreq, res, userModel
beforeGetRelatedThingsGET /users/:id/thingsreq, res, thingModel
afterGetRelatedThingsGET /users/:id/thingsreq, res, thingsCollection
beforeRelatedThingPOST /users/:id/thingsreq, res, userModel
afterRelateThingPOST /users/:id/thingsreq, 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

Adding hooks

How to use hooks

License

MIT

0.1.1

7 years ago

0.1.0

7 years ago