express-routeloader v2.0.0
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.
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago