
Company News
/Security News
Socket Selected for OpenAI's Cybersecurity Grant Program
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.
routes-router
Advanced tools
Simplest request handler possible
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")
}
})
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)
}
})
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)
})
npm install routes-router
FAQs
Simplest router possible
The npm package routes-router receives a total of 1,795 weekly downloads. As such, routes-router popularity was classified as popular.
We found that routes-router demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

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.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.

Security News
Socket CEO Feross Aboukhadijeh joins 10 Minutes or Less, a podcast by Ali Rohde, to discuss the recent surge in open source supply chain attacks.

Research
/Security News
Campaign of 108 extensions harvests identities, steals sessions, and adds backdoors to browsers, all tied to the same C2 infrastructure.