Router
A lean and mean http router for node.js.
It is available through npm:
npm install router
Usage
Router does one thing and one thing only - route http requests.
var http = require('http');
var router = require('router');
var route = router();
route.get('/', function(req, res) {
res.writeHead(200);
res.end('hello index page');
});
http.createServer(route).listen(8080);
If you want to grap a part of the path you can use capture groups in the pattern:
route.get('/{base}', function(req, res) {
var base = req.params.base;
});
The capture patterns matches until the next /
or character present after the group
route.get('/{x}x{y}', function(req, res) {
});
Optional patterns are supported by adding a ?
at the end
route.get('/{prefix}?/{top}', function(req, res) {
});
If you want to just match everything you can use a wildcard *
which works like unix wildcards
route.get('/{prefix}/*', function(req, res) {
});
If the standard capture groups aren't expressive enough for you can specify an optional inline regex
route.get('/{digits}([0-9]+)', function(req, res) {
});
You can also use regular expressions and the related capture groups instead:
route.get(/^\/foo\/(\w+)/, function(req, res) {
var group = req.params[1];
});
Methods
route.get
: Match GET
requestsroute.post
: Match POST
requestsroute.put
: Match PUT
requestsroute.head
: Match HEAD
requestsroute.del
: Match DELETE
requestsroute.options
: Match OPTIONS
requestsroute.all
: Match all above request methods.
Error handling
By default Router will return 404 if you no route matched. If you want to do your own thing you can give it a callback:
route(req, res, function() {
res.writeHead(404);
res.end();
});
You can also provide a catch-all to a given route that is called if no route was matched:
route.get(function(req, res) {
res.writeHead(404);
res.end('no GET handler found');
});