exp-rest

0.1.1 • Public • Published

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

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! 😎

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

Adding hooks

How to use hooks

License

MIT

Package Sidebar

Install

npm i exp-rest

Weekly Downloads

4

Version

0.1.1

License

MIT

Last publish

Collaborators

  • mrxh8