New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

routes-router

Package Overview
Dependencies
Maintainers
1
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

routes-router

Simplest router possible

latest
Source
npmnpm
Version
4.3.1
Version published
Weekly downloads
2.1K
-37.43%
Maintainers
1
Weekly downloads
 
Created
Source

routes-router

deprecated dependency status

Simplest request handler possible

DEPRECATED Use http-hash-router instead

Example

var Router = require("routes-router")
var http = require("http")

var router = Router()

http.createServer(router)

router.addRoute("/foo", function (req, res) {
    res.end("hello!")
})

router.addRoute("/bars/:barName", function (req, res, opts) {
    res.end("you request bars " + opts.params.barName)
})

router.addRoute("/foos/:fooName", function (req, res, opts, cb) {
    db.get(opts.params.fooName, function (err, value) {
        if (err) return cb(err)

        res.end(JSON.stringify(value))
    })
})

router.addRoute("/baz/:things", {
    GET: function (req, res) {
        res.end("I will give you your thing")
    },
    POST: function (req, res) {
        res.end("got your things")
    }
})

Error handling with a router

You can use a router to do central error handling

var Router = require("routes-router")
var sendError = require("send-data/error")
var uuid = require("uuid")

var router = Router({
  errorHandler: function (req, res, err) {
    err.id = uuid()

    // log it somewhere
    logError(req, res, err)

    // if req is json
    if (isJson(req)) {
      sendError(req, res, err)
    } else {
      // render HTML 500 page
      renderErrorPage(req, res, err)
    }
  },
  teardown: function (req, res, err) {
    // an unexcepted exception occured
    // process is in corrupted state
    // you have to shut it down
    // see node domains docs
  },
  notFound: function (req, res) {
    // render a custom 404 page
    renderNotfoundPage(req, res)
  }
})

Cascading errors in a tree of routers

Since a Router just returns a function (req, res) {} you can add routers to a router

Here we can just embed a Router instance in another router instance. A child router will use the parent router's callback so all error handling is managed in the parent, not the child.

This means you can define your error handling in your parent and all children will re-use that error handling logic.

Note that we use the .prefix() instead of .addRoute() method to add child routers. The .prefix() ensures that both /user, /user/ and /user/*? goes to the child router.

var Router = require("routes-router")

var app = Router({
  errorHandler: function (req, res) {
    res.statusCode = 500
    res.end("no u")
  },
  notFound: function (req, res) {
    res.statusCode = 404
    res.end("oh noes")
  }
})

var users = Router()
var posts = Router()

app.prefix("/user", users)
app.prefix("/post", posts)

users.addRoute("/", function (req, res) {
  res.end("all users")
})
users.addRoute("/:id", function (req, res, opts) {
  res.end("user " + opts.params.id)
})

posts.addRoute("/", function (req, res) {
  res.end("all posts")
})
posts.addRoute("/:id", function (req, res, opts) {
  res.end("post " + opts.params.id)
})

Installation

npm install routes-router

Contributors

  • Raynos

MIT Licenced

FAQs

Package last updated on 19 Apr 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts