1.0.0 • Published 8 years ago

async-routing v1.0.0

Weekly downloads
5
License
SEE LICENSE IN LI...
Repository
github
Last release
8 years ago

#async-routing - fast and efficient routing

Example

const http = require('http');
const url  = require('url');
const routing = require('async-routing');

//create a new router
const router = routing();

//add some routes
router.route(function () {
  res.write('found homepage');
  res.end();
})
.route('/hello', function(req, res, next){
  res.write('found /hello');
  res.end();
});

//create and start a server
const server = http.createServer((req, res, next) => {
  const path = url.parse(req.url).pathname;
  
  //call our router
  router(path, [req, res], function () {
  
    //add a basic error handler
    res.writeHead(404, {"Content-Type": "text/plain"});
    res.write("404 Not Found\n");
    res.end();
  });
});

server.listen(3000, function () {
  console.log(`Server running on port`, port);
});

When requesting localhost:3000 in the browser you will get:

found homepage

A request on localhost:3000/hello would have this response:

found /hello

All other paths get a 404 Not Found message as response.

Methods

.route()

Add a route.

Arguments

1. String that represents the path (this is optional)

e.g./foo or /foo/baz

2. Handlers for the route.

The handlers get the arguments passed as second argument to the .run() method (see below) and as last argument a method called next()

Warning: Your handlers need to have exactly as much arguments as the .run method gets passed as second argument plus the next() method. Methods without the correct amount of arguments will not get called.

e.g. if you are passing req and res to the router all your handlers need to get req, res and next().

Returns

this

.run()

Match your routing logic on a path

Arguments

1. A path (can be an array or string)

e.g. /foo, /foo/baz or ['foo', 'baz']

2. An array of arguments for the handlers.

If you are working with a http-server this would be: [req, res]

3. An error-handler that is getting called when every route that matches calls next().

On a http-server you would probably send a 404 status code.

Routes with *

/* or * matches every route.

/*/adsf matches /hi/asdf, /a/asdf and /foo/asdf. It does not match /asdf.

/foo/* matches /foo/baz, /foo/asdf and /foo/asdf/baz. It does not match /foo.