express-routeloader
v2.0.0
Published
Automatic routeloader for the express web framwork
Downloads
12
Readme
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
exports.read = {
handler : function (req, res) {
res.send(200);
}
};
exports.create = {
handler : function (req, res) {
res.send(200);
}
};
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 = require('express'),
app = express(),
router = require('express-routeloader')({/* option */});
app.use(router);
app.listen(3000);
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 :
{
"create": "POST",
"read": "GET",
"list" : "GET",
"search" : "GET",
"update": "PUT",
"delete": "DELETE"
}
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!
exports.hello = {
handler :function (req, res, next) {
res.send('world');
}
};
You can overwrite default settings by adding properties to the exported object:
'use strict' // Ofc we are running strict!
exports.hello = {
url = '/different/route/to/:id',
method = 'PUT',
middleware = [func1, func2, func3],
handler : function (re, res, next) {
res.send('World');
}
};
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!
exports.hello = {
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
}
}
},
handler : function (req, res, next) {
// do an update
res.send('world');
}
};
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.