express-routes-registrar
v2.0.5
Published
register express app routes dynamically from controllers and routes json files
Downloads
70
Maintainers
Readme
express-routes-registrar
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