express-routes-registrar

2.0.5 • Public • Published

express-routes-registrar

build:? npm npm npm

Description

Adds an MVC structure to a node express app by separating routes into json files and handlers into controllers. Routes are defined as json files that hold the methods and handler names of each route while Handlers are defined in controllers.

Install

npm install express-routes-registrar

Usage

Defining the app routes into json files

/routes/homeRoutes.json

{
  "/": {
    "GET": "index"
  }
}

/routes/usersRoutes.json

{
  "/users": {
    "GET": "getAll",
    "POST": "add"
  },
  "/users/:id": {
    "GET": "get",
    "PUT": "update",
    "DELETE": "remove"
  }
}

Exporting routes module

/routes/index.js

module.exports = {
  homeRoutes : require('./homeRoutes'),
  usersRoutes: require('./usersRoutes')
}

Defining handlers into controllers

/controllers/homeController.js

class HomeController {
  index() {
    // handle / for GET
  }
}
 
module.exports = HomeController;

/controllers/usersController.js

class UsersController {
  getAll(req, res) {
    // handle /users GET
  }
 
  add(req, res) {
    // handle /users POST
  }
 
  get(req, res) {
    // handle /users/:id GET
  }
 
  update(req, res) {
    // handle /users/:id PUT
  }
 
  remove(req, res) {
    // handle /users/:id DELETE
  }
}
 
module.exports = UsersController;

Exporting controllers module

/controllers/index.js

// create an instance of each controller
// can include any factory logic to create controllers
 
const HomeController  = require('./controllers/homeController');
const UsersController = require('./controllers/usersController');
 
module.exports = {
  homeController : new HomeController(),
  usersController: new UsersController()
}

create the registrar

creates a routes registrar object

const routes = require('./routes');
const controllers = require('./controllers');
const app = require('express')();
const routesRegistrar = require('express-routes-registrar')(app);

.register(routes, controllers)

registers all routes and controllers

routesRegistrar.register(routes, controllers);

.registerRoutesJson(routesJson, controller)

registers a routes file and its controller

routesRegistrar.registerRoutesJson(routes.homeRoutes, controller.homeController);

.registerRouteMethods(route, methods, controller)

registers a route's methods and their controller

const methods = routes.usersRoutes['/users'];
routesRegistrar.registerRouteMethods(
  '/users',
  methods,
  controller.usersController
);

.registerRoute(route, method, handler)

register a route method and its handler

routesRegistrar.registerRoute('/users/:id', 'GET', (req, res) => {
  // handle /users/:id GET
});

Build

grunt build

License

The MIT License. Full License is here

Package Sidebar

Install

npm i express-routes-registrar

Weekly Downloads

21

Version

2.0.5

License

MIT

Unpacked Size

51.6 kB

Total Files

15

Last publish

Collaborators

  • eyas-ranjous