Skip to content

❤️ Modular/Action/Service based Node.js RESTful API boilerplate

License

Notifications You must be signed in to change notification settings

iKest/supra-api-nodejs

 
 

Repository files navigation

Node.js API boilerplate

Piece of my thoughts about Node.js architecture.

supra-api-nodejs: A little bit about Node.js RESTful APIs Architecture (RU)

Highlights:

  • RESTful API
  • ES6 Classes
  • Action based
  • Service based
  • SQL based (PostgreSQL with objection.js)
  • Migrations(knex.js)
  • Auth (JWT/Access-token/Refresh-token)
  • Role based access control
  • Request validation (Joi.js)
  • CRUD(users, posts resources)
  • Automated API documentation

Key points:

1. Routing

Each entity have own router class that implement RESTful interface to work with it.

class PostsRouter extends BaseRouter {
  static get router () {
    router.get('/', this.actionRunner(actions.ListAction))
    router.get('/:id', this.actionRunner(actions.GetByIdAction))
    router.post('/', this.actionRunner(actions.CreateAction))
    router.patch('/:id', this.actionRunner(actions.UpdateAction))
    router.delete('/:id', this.actionRunner(actions.RemoveAction))

    return router
  }
}

For example PostsRouter implement base CRUD routes to post entity. Each route fires own action.

2. Action

It's a class that encapsulated request validation, permission verification and business logic. One file, one class, one REST operation.

3. Service

It's much more like utility layer thats provide some helpful promisfitated functions like check access, hash password or generate jwt's.

4. DAO

Implement data access methods.

Implemented endpoints:

endpoints

!!! Project still in progress !!!

2017 - ...

About

❤️ Modular/Action/Service based Node.js RESTful API boilerplate

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 99.7%
  • HTML 0.3%