Join us to discuss the challenges, solutions and best practices for in-house JavaScript code sharing. Tuesday, 12/17 at 10am PT/1pm ET.Sign up here »

koa-path-match

2.0.0 • Public • Published

Koa Path Match

NPM version build status Test coverage Dependency Status License Downloads

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
  })
)

API

route(path, fns...)

paths are just like Express routes. fns is either a single middleware or nested arrays of middleware, just like Express.

const router = route(path)

When you don't set fns in the route() function, a router instance is returned.

router[method](fns...)

Define a middleware just for a specific method.

app.use(route('/:id(\\d+)').get(await ctx => {
  ctx.body = yield 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.

this.params

Any keys defined in the path will be set to ctx.params, overwriting any already existing keys defined.

Install

npm i koa-path-match

DownloadsWeekly Downloads

150

Version

2.0.0

License

MIT

Last publish

Collaborators

  • avatar
  • avatar
  • avatar