Express-routeloader
This is originally a fork of Livedocs-routeloader. Some credit goes to Simon Mcmannus
Basics
Express-routeloader makes it easy to handle endpoints for your REST server.
Express-routeloader builds an express router from your ./routes
folder.
when given a directory structure like
routes
- groups.js
where groups is
exportsread = { res; };exportscreate = { res; };
Express-routeloader will create a router with the following routes:
POST /groups
GET /groups/:id
You can use multiple routers in the same project which is really useful for maintaining multiple versions of an api.
Routeloader
The routeloader works as a simple router of express:
'use strict'; var express = app = router = /* option */; app; app;
options
rootDir
: The directory containing your routes. Defaults to ./routes
logger
: Logging function. default : console.log
hideCRUD
: Should CRUD endpoints have the extentions be hidden.
GET assets/read/:id
becomes `GET assets/:id. Defaults to true.
verbMap
: Json object mapping filenames to default HTTP verbs. default :
prefix
: prefix for all loaded routes e.g. /api/v1/
.
this is very useful for maintaining multiple versions of an api.
Routes
routing endpoints are node modules that export a set of objects with a method handler
:
'use strict' // Ofc we are running strict!exportshello = { res; };
You can overwrite default settings by adding properties to the exported object:
'use strict' // Ofc we are running strict! exportshello = url = '/different/route/to/:id' method = 'PUT' middleware = func1 func2 func3 { res; };
validation
Express-routeloader lets you use json-schema to validate the input to your endpoints. to add validation simply add the schema to the module.
'use strict' // Ofc we are running strict! exportshello = url = 'update/:id' method : 'POST' params = required : 'id' properties : handler : type : 'integer' minimum : 0 query = properties : someOption : type : 'boolean' body = properties : name : type : 'string' maxLength : 80 { // do an update res; };
Promises
Express route validator supports promises. If a route handler returns a promise, routeloader with call res.send on promise resolution and next on rejection.