Node.js file-based routing middleware for express.
This example shows how you can load a full directory of method-named files to add to an express router. The router creates a new router for each folder thus it routes to each file as you would expect.
Assume you have a folder named endpoints
with this structure:
.
├── api
│ ├── get.js
│ ├── router.js
│ └── v1
│ ├── cars
│ │ ├── id
│ │ │ ├── get.js
│ │ │ └── route.js
│ │ ├── get.js
│ │ └── post.js
│ └── get.js
├── get.js
└── post.js
You would simple add the express-file-router middleware:
var express = require('express')
var fileRouter = require('express-file-router')
var app = express()
//Load all files in endpoints
app.use(fileRouter.load(path.join(__dirname, 'endpoints')));
The call returns a router that will auto-load a directory of routes.
Options can contain the following:
usePromise
- true|false Method files must return a promise that resolves a Response object
Any method function that express router provides.
Example: get.js
module.exports = function(req, res, next) {
res.json({
message: 'This is the response to a GET request'
});
}
If usePromise: true
then use a promise instead:
var Promise = require('bluebird');
var Response = require('express-file-router').Response;
module.exports = function(request) {
return Promise.try(function() {
return new Response(200, {
message: 'This is the response to a GET request'
})
});
}
A router is passed in to set any necessary middleware.
Must return a valid router.
Example: router.js
module.exports = function(router) {
return router.use(bodyParser.json());
}
Return a route string which replaces the folder name.
Note that on linux filesystems, colon and other characters are allowed. Thus you don't necessarily need a route.js
file to specify a route with a parameter. However, it's still recommended to use a colon since Windows does not allow
special characters in file names.
Example: route.js
module.exports = function() {
return ':someparam';
}