express-autorouter
v0.1.3
Published
Calling controllers without router
Downloads
9
Readme
express-autorouter
Express middleware implements url routing through simple file and folder structure.
Attention
I've started this project recently - so I may make breaking changes between releases, please check the README for each release for the latest documentation.
Install
npm install express-autorouter
Usage
Add this line to your app.js
after all routes but before error handlers. Then routes will override some controllers and methods if needed.
app.use(require('express-autorouter')('./path/to/controllers/root'));
Parameters
- Path to controllers root
- Controllers files extension (default:
.js
) - Index controller (default:
index
) - Index method (default:
index
)
Controller
Controllers must export the object with request-handler functions as its keys.
//sample controller index.js
module.exports.index = function(req, res, next) {
res.send('This method can work for main page request');
};
module.exports.someothermethod = function(req, res, next) {
res.send('This is other method');
};
How it works
You create controllers
folder in your application root folder
/projectRoot
app.js // <- here including middleware - app.use(require('express-autorouter')('./controllers'));
/controllers
/somemodule
index.js // <- methods: index
somecontroller.js // <- methods: somemethod
/othermodule
othercontroller.js // <- methods: index, othermethod
index.js // <- methods: index, contacts
This structure will create routes:
domain.com/somemodule
domain.com/somemodule/somecontroller/somemethod
domain.com/othermodule/othercontroller
domain.com/othermodule/othercontroller/othermethod
domain.com/
domain.com/contacts
Why last route is not /index/contacts?
For example, requested /segment1/segment2/segment3/segment4
- Search controller/method as
/segment1/segment2/segment3 / segment4 / index
--------------------------- ======== +++++
folder controller method
- If not found then
/segment1/segment2 / segment3 / segment4
------------------ ======== +++++
folder controller method
- If not found then
/segment1/segment2/segment3 / index / segment4
--------------------------- ===== ++++++++
folder controller method
- If not found then
/segment1/segment2/segment3/segment4 / index / index
------------------------------------ ===== +++++
folder controller method
- If not found then call
next()
Mirrors
Mirrored routes you can redirect to right routes in standard express routers.
var express = require('express'),
app = express();
...
app.get('/index', function(req, res) { res.redirect(301, '/'); });
app.get('/index/index', function(req, res) { res.redirect(301, '/'); });
app.use(require('express-autorouter')('./controllers'));
app.use(/* Error Handler */);
app.listen(/* port */);
License
MIT