route-emitter

dead-simple routing

npm install route-emitter
37 downloads in the last month

route-emitter

Build Status

Dead-simple routing for node.

usage

var http = require('http'),
    Router = require('route-emitter').Router,
    router = new Router()

router.listen('get', '/', function (req, res) {
  res.end('Hello, world')
})

// listen for any http verb!
router.listen('post', '/blog', function (req, res) {
  res.end('BLOG CREATED!')
})

// or you can catch 404s
router.listen('*', '*', function (req, res) {
  res.writeHead(404)
  res.end('PAGE NOT FOUND!')
})

// ...or verb-specific 404s
router.listen('put', '*', function (req, res) {
  res.writeHead(404)
  res.end('RESOURCE NOT FOUND!')
})

// create a listener with named emitter!
router.listen('delete', '/blog', 'deleteThatBlog')

// react to the emit!
router.on('deleteThatBlog', function (req, res) {
  res.end('BLOG DELETED')
})

// catch named parameters!
router.listen('get', '/blog/{{ id }}', function (req, res, params) {
  res.end(params.id)
})

// catch splats!
router.listen('delete', '/*', function (req, res, params) {
  res.end(params._splat[0]) // || res.end(params._1)
})

// or roll your own regexp!
router.listen('patch', /my\/(.*)/, function (req, res, params) {
  res.end(params._captured[0]) // || res.end(params.$1)
})

http.createServer(router.route.bind(router)).listen(70707)

other info

order of operations

  • (verb)/path literal, if found
  • (verb)/path params || splat || regexp if found
  • (verb)/* if found
  • */path literal, if found
  • */path params || splat || regexp if found
  • */*
  • at this point, route-emitter does a last-ditch effort to find a handler and emits an event named (verb):(path). if no listeners are attached to that specific event, it logs an unmatched route to process.stdout

params values

  • params._splat array of splat results
  • params._1 - params._x 1-x splat results
  • params._captured array of captured results from custom RegExp
  • params.$1 - $params.$x 1-x captured results

license

MIT

npm loves you