Have ideas to improve npm?Join in the discussion! »

    crisscut

    0.2.3-beta • Public • Published

    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

    Keywords

    none

    Install

    npm i crisscut

    DownloadsWeekly Downloads

    3

    Version

    0.2.3-beta

    License

    MIT

    Last publish

    Collaborators

    • avatar