GithubHelp home page GithubHelp logo

router's Introduction

Router

A lean and mean http router for node.js.
It is available through npm:

npm install router

Usage

Router does one thing and one thing only - route http requests.

var http = require('http');
var router = require('router');
var route = router();

route.get('/', function(req, res) {
	res.writeHead(200);
	res.end('hello index page');
});

http.createServer(route).listen(8080); // start the server on port 8080

If you want to grab a part of the path you can use capture groups in the pattern:

route.get('/{base}', function(req, res) {
	var base = req.params.base; // ex: if the path is /foo/bar, then base = foo
});

The capture patterns matches until the next / or character present after the group

route.get('/{x}x{y}', function(req, res) {
	// if the path was /200x200, then req.params = {x:'200', y:'200'}
});

Optional patterns are supported by adding a ? at the end

route.get('/{prefix}?/{top}', function(req, res) {
	// matches both '/a/b' and '/b'
});

If you want to just match everything you can use a wildcard * which works like unix wildcards

route.get('/{prefix}/*', function(req, res) {
	// matches both '/a/', '/a/b', 'a/b/c' and so on.
	// the value of the wildcard is available through req.params.wildcard
});

If the standard capture groups aren't expressive enough for you can specify an optional inline regex

route.get('/{digits}([0-9]+)', function(req, res) {
	// matches both '/24' and '/424' but not '/abefest' and so on.
});

You can also use regular expressions and the related capture groups instead:

route.get(/^\/foo\/(\w+)/, function(req, res) {
	var group = req.params[1]; // if path is /foo/bar, then group is bar
});

Methods

  • route.get: Match GET requests
  • route.post: Match POST requests
  • route.put: Match PUT requests
  • route.head: Match HEAD requests
  • route.del: Match DELETE requests
  • route.options: Match OPTIONS requests
  • route.all: Match all above request methods.

Error handling

By default Router will return 404 if you no route matched. If you want to do your own thing you can give it a callback:

route(req, res, function() {
	// no route was matched
	res.writeHead(404);
	res.end();
});

You can also provide a catch-all to a given route that is called if no route was matched:

route.get(function(req, res) {
	// called if no other get route matched
	res.writeHead(404);
	res.end('no GET handler found');
});

License

MIT

router's People

Contributors

ianjorgensen avatar joelklabo avatar mafintosh avatar tim-skauge avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.