All Projects → heapwolf → Paramify

heapwolf / Paramify

Parameterized routes without a big bloated router, e.g. "showtimes/:start/:end" and "files/*"

Programming Languages

javascript
184084 projects - #8 most used programming language

development sponsored by voltra.co

SYNOPSIS

Parses urls so you can "route"

MOTIVATION

For when you want url parameters but not a big bloated router

USAGE

var fs = require('fs')
var http = require('http')
var paramify = require('paramify')

http.createServer(function (req, res) {

  var match = paramify(req.url)
  res.writeHead(200, {'Content-Type': 'text/plain'})

  if (match('intro/:greeting')) {

    intro(match.params, res)
  }
  else if (match('showtimes/:start/:end')) {

    showtimes(match.params, res)
  }
  else if (match('files/*')) {
  
    serveFile(match.params, res)
  }
  
}).listen(1337, '127.0.0.1')

function intro(params, res) {

  res.end('Greeting was "' + params.greeting + '"\n')
}

function showtimes(params, res) {

  var message = [
    'Show starts at', params.start, 
    'and ends at', params.end
  ].join(' ') + '\n'

  res.end(message)
}

function serveFile(params, res) {
  // match.params contains numeric keys for any
  // path components matched with *
  fs.createReadStream(__dirname + '/static/' + params[0]).pipe(res)
}


console.log('Server running at http://127.0.0.1:1337/')

Given the following url

http://localhost:1337/showtimes/10:00AM/8:30PM

The server would respond with

Show starts at 10:00AM and ends at 8:30PM

Given the following url

http://localhost:1337/intro/Hello%20world!

The server would respond with

Greeting was "Hello world!"

Given the following url

http://localhost:1337/files/users/1/description.txt

The server would respond with the contents of static/users/1/description.txt.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].