0.1.3 • Published 9 years ago

express-autorouter v0.1.3

Weekly downloads
4
License
MIT
Repository
github
Last release
9 years ago

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