copperhead

Connect compatible router middleware that supports content negotiation

Usage no npm install needed!

<script type="module">
  import copperhead from 'https://cdn.skypack.dev/copperhead';
</script>

README

Copperhead

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

Installation

npm install copperhead

Usage

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) ->

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) ->
    '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', ->
    'bar!'

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

WebDAV

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

Custom

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