course

0.0.1 • Public • Published

course Flattr this!experimental

A framework-independent express-like router.

Usage

course

router = require('course')()

Creates a new router.

router[method]([urlPattern], middlewares...)

Adds a new middleware to the router. method is an HTTP verb, such as get, post or put, to filter requests by the request method used.

The first argument may optionally be a URL pattern or regular expression to match URLs against. Each argument after the URL is an express-style middleware function with the signature (req, res, next).

router.any([urlPattern], middlewares...)

Same as above, however without filtering by request method.

Example

var db     = require('some-database')
var course = require('course')
var http   = require('http')
var router = course()
 
var server = http.createServer(function(req, res) {
  router(req, res, function(err) {
    if (err) return res.end(err.message)
    res.end('404')
  })
})
 
router.all(function(req, res, next) {
  // do something on every request...
  next()
})
 
// pass in URL filters, and multiple
// middlewares
router.get('/'
  , getUserData
  , loadHomeView
  , render
)
 
function getUserData(req, res, next) {
  db.getUser(function(err, user) {
    if (err) return next(err)
    req.user = user
    next()
  })
}
 
function loadHomeView(req, res, next) {
  req.view = require('./views/home')
  next()
}
 
function render(req, res, next) {
  req.end(req.view({
    user: req.user
  }))
}
 
// Or capture URL paths:
router.get('/user/:username/*', function(req, res, next) {
  var name = this.username
  var page = this[1]
})

License

MIT. See LICENSE.md for details.

Readme

Keywords

none

Package Sidebar

Install

npm i course

Weekly Downloads

25

Version

0.0.1

License

MIT

Last publish

Collaborators

  • hughsk