0.2.3-beta • Published 9 years ago

crisscut v0.2.3-beta

Weekly downloads
3
License
MIT
Repository
github
Last release
9 years ago

Crisscut

A simplistic router for Node.js

NPM Version

So you need a router for Node? Look no further than Crisscut!

Setting up Crisscut is easy.

var http = require("http")
var Crisscut = require("crisscut")
//You can set up your routes with a routing table like so
var routes = {
	//Explicit route example
	"/helloWorld": {
		//Just define what method you want to use!
		get: function(req, res){
			res.writeHead({"Content-Type": "text/plain"})
			res.end("Hello world!")
		}, 
		//We can also use 'on' as a catchall for all requests that aren't already defined. For example, a POST would end up in this function
		on: function(req, res){
			res.writeHead({"Content-Type": "text/plain"})
			res.end("Hello strange method!")
		}
	}, 
	//Of course, your routes can have variables in your routes
	"/user/:name": {
		//If we were to GET /user/ollien, we would get returned the text "Hello ollien!"
		get: function(req, res, name){
			res.writeHead({"Content-Type": "text/plain"})
			res.end("Hello "+name+"!")
		}
	}, 
	//Or, if you want to use regex, that's fine too! Just put your regex in prands, like so
	"/user/:([0-9]+)": {
		get: function(req, res, userId){
			res.writeHead({"Content-Type": "text/plain"})
			res.end("Hello user "+userId+"!")
		}
	}
	//You can even have this regex match over multiple components of your url.
	"/file/:(.*)*": { 
		//If we were to GET /file/img/watermelon.png,  we would be returned the text "You requested img/watermelon.png"
		get: function(req, res, path){
			res.writeHead({"Content-Type": "text/plain"})
			res.end("You requested "+path)
		}
	}
}
var router = new Crisscut(routes)

//Of course if you prefer, you can add a route on the fly after the router is defined.
router
	.get('/', function(req, res){
		res.writeHead({"Content-Type": "text/plain"})
		res.end("Hello!")
	})
	.post('/', function(req, res, params){  //You can even chain these together if you want!
		//Any query arguments (i.e. /?foo=bar) will get returned as the final argument to your callback.
		res.writeHead({"Content-Type":"text/plain"});
		res.writeHead("You sent "+JSON.stringify(params));
	})


http.createServer(function(req, res){
	router.route(req, res, function(err){
		if (err){
			console.log(err)
		}
	})
}).listen(8080, '127.0.0.1');

##Route syntax Syntax | Description | Example URL -------|------------ | ----------- /my/route | An basic route | http://example.com/my/route /my/route/:variable | A route that contains a variable | http://example.com/my/route/hello /my/route/:([0-9]+) | A route that will only match 0-9+ as a variable | http://example.com/my/route/59 /my/route/:([0-9]+)* | A route that will only match 0-9+ as a variable, as well as any other subseqent parts of the route that match the regex. | http://example.com/my/route/59/82

##Method Documentation Method | Description --------|--------- Crisscut([routes]) | Basic constructor for Crisscut. Crisscut.prototype.route(req, res, [errcallback]) | Route requests to Crisscut Crisscut.prototype.addRoute(method, route, routeFunction, [callback]) | Add a route to Crisscut Crisscut.prototype.on(route, routeFunction, [callback]) | Add a wildcard route to Crisscut Crisscut.prototype.get(route, routeFunction, [callback]) | Add a GET route to Crisscut Crisscut.prototype.post(route, routeFunction, [callback]) | Add a POST route to Crisscut Crisscut.prototype.put(route, routeFunction, [callback]) | Add a PUT route to Crisscut Crisscut.prototype.delete(route, routeFunction, [callback]) | Add a DELETE route to Crisscut Crisscut.prototype.trace(route, routeFunction, [callback]) | Add a TRACE route to Crisscut Crisscut.prototype.connect(route, routeFunction, [callback]) | Add a CONNECT route to Crisscut Crisscut.prototype.path(route, routeFunction, [callback]) | Add a PATCH route to Crisscut

0.2.3-beta

9 years ago

0.2.2-beta

9 years ago

0.2.1-beta

9 years ago

0.2.0-beta

9 years ago

0.1.6-beta

9 years ago

0.1.5-beta

9 years ago

0.1.4-beta

9 years ago

0.1.3-beta

9 years ago

0.1.1-beta

9 years ago

0.1.0-beta

9 years ago

0.1.0-prerelease

9 years ago

0.1.0

9 years ago