Product
Socket Now Supports uv.lock Files
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
koa-tree-router
Advanced tools
Koa tree router is a high performance router for Koa.
Fast. Up to 11 times faster than Koa-router. Benchmark
Express-style routing using router.get
, router.put
, router.post
, etc.
Support for 405 method not allowed
Multiple middleware per route
The router relies on a tree structure which makes heavy use of common prefixes, it is basically a compact prefix tree (or just Radix tree).
This module's tree implementation is based on julienschmidt/httprouter.
# npm
npm i koa-tree-router
# yarn
yarn add koa-tree-router
const Koa = require("koa");
const Router = require("koa-tree-router");
const app = new Koa();
const router = new Router();
router.get("/", function(ctx) {
ctx.body = "hello, world";
});
app.use(router.routes());
app.listen(8080);
Instance a new router.
You can pass a middleware with the option onMethodNotAllowed
.
const router = require('koa-tree-router')({
onMethodNotAllowed(ctx){
ctx.body = "not allowed"
}
})
Register a new route.
router.on('GET', '/example', (ctx) => {
// your code
})
If you want to get expressive, here is what you can do:
router.get(path, middleware)
router.delete(path, middleware)
router.head(path, middleware)
router.patch(path, middleware)
router.post(path, middleware)
router.put(path, middleware)
router.options(path, middleware)
router.trace(path, middleware)
router.connect(path, middleware)
If you need a route that supports all methods you can use the all
api.
router.all(path, middleware)
You can add middleware that is added to all future routes:
router.use(authMiddleware);
router.get("/foo", (ctx) => { /* your code */ });
router.get("/bar", (ctx) => { /* your code */ });
router.get("/baz", (ctx) => { /* your code */ });
This is equivalent to:
router.get("/foo", authMiddleware, (ctx) => { /* your code */ });
router.get("/bar", authMiddleware, (ctx) => { /* your code */ });
router.get("/baz", authMiddleware, (ctx) => { /* your code */ });
Returns router middleware.
app.use(router.routes());
A way to create groups of routes without incuring any per-request overhead.
const Koa = require("koa");
const Router = require("koa-tree-router");
const app = new Koa();
const router = new Router();
const group = router.newGroup("/foo");
// add a handler for /foo/bar
group.get("/bar", function(ctx) {
ctx.body = "hello, world";
});
app.use(router.routes());
app.listen(8080);
Middleware added with use()
are also added to the nested routes.
This object contains key-value pairs of named route parameters.
router.get("/user/:name", function() {
// your code
});
// GET /user/1
ctx.params.name
// => "1"
There are 3 types of routes:
1.Static
Pattern: /static
/static match
/anything-else no match
2.Named
Named parameters have the form :name
and only match a single path segment:
Pattern: /user/:user
/user/gordon match
/user/you match
/user/gordon/profile no match
/user/ no match
3.Catch-all
Catch-all parameters have the form *name
and match everything. They must always be at the end of the pattern:
Pattern: /src/*filepath
/src/ match
/src/somefile.go match
/src/subdir/somefile.go match
FAQs
A high performance koa router
The npm package koa-tree-router receives a total of 2,470 weekly downloads. As such, koa-tree-router popularity was classified as popular.
We found that koa-tree-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.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.
Security News
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.