Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 7e1afffadb
Fetching contributors…

Cannot retrieve contributors at this time

110 lines (81 sloc) 2.041 kb

build status


Copperhead is a connect compatible router middleware that supports content negotiation.


npm install copperhead


The router object has a method for each HTTP method. Each method needs at least a handler function that gets req und res as parameters. If the function returns nothing, the next middleware will be used. If the function returns a string or object it will be used as response with an appropriate content type.

Optionally a method takes a path and a content type. The path variables are exposed to the this object of the handler.

router.method [path], [content type], (req, res, next) ->

So for example if we want to use the GET method at the path /users/:name for the content type text/html we would do

router.get '/users/:name', 'text/html', (req, res, next) ->
    'Hello user '+@name+'!'

A more complete example

connect = require 'connect'

router = require 'copperhead'

app = connect()
app.use connect.logger 'dev'
app.use router

router.get '/foo', ->

router.get ->
    'Hello World!'

router.get 'application/json', ->
    hello: "World!"

router.get 'text/html', ->
    '<!DOCTYPE html><html><head><title>Hello World!</title></head><body></body>Hello!</html>'

app.listen 3000

Available Methods

HTTP 1.1

get, post, put, delete, options, patch


connect, trace, copy, lock, mkcol, move, propfind, proppatch, unlock, report, mkactivity, checkout, merge


Use router.route to create a custom route. route takes the arguments

  • method
  • path
  • mimetype
  • middleware
app = connect()
app.use connect.logger 'dev'
app.use router

router.route 'custom', '/', '*/*', ->
    "I'm custom!"

app.listen 3000

Similar Projects

Jump to Line
Something went wrong with that request. Please try again.