A simple routing wrapper around path-match. Similar to koa-route, except it optionally handles methods better. All of these routers use path-to-regexp underneath, which is what Express uses as well.
const route = require('koa-path-match')({/* options passed to path-to-regexp */})
app.use(route('/:id(\\d+)', (ctx, next) => {
const id = ctx.params.id
// do stuff
switch (ctx.request.method) {
}
}))
Or you can create middleware per method:
app.use(route('/:id(\\d+)')
.get(async ctx => {
ctx.body = await Things.getById(ctx.params.id)
})
.delete(async ctx => {
await Things.delete(ctx.params.id)
ctx.status = 204
})
)
- Lead: @jonathanong @jongleberry
- Team: @koajs/routing
path
s are just like Express routes. fns
is either a single middleware
or nested arrays of middleware, just like Express.
When you don't set fns
in the route()
function, a router instance is returned.
Define a middleware just for a specific method.
app.use(route('/:id(\\d+)').get(async ctx => {
ctx.body = await Things.getById(ctx.params.id)
}))
-
next
is not passed as a parameter. I consider this an anti-pattern in Koa - one route/method, one function.
Any keys defined in the path will be set to ctx.params
,
overwriting any already existing keys defined.