Conditionally run middleware in Koa
Note: only tested with the new async/await style middleware in koa 2
npm install --save koa-if
middleware
middleware to run if condition is truthy.condition
either a boolean or a function that returns a boolean. Functions are passed the current context.import Koa from 'koa'
import test from 'koa-if'
const app = new Koa()
async function normalMiddleware(ctx, next) {
if (!ctx.body) ctx.body = '<h1>Normal</h1>'
await next()
}
async function specialMiddleware(ctx, next) {
if (!ctx.body) ctx.body = '<h1>Special</h2>'
await next()
}
app.use(normalMiddleware)
// only run specialMiddleware on /special
app.use(test(specialMiddleware, (ctx) => {
return ctx.url == '/special'
}))
app.listen(3000)
Now, localhost:3000/special
will show "Special" while all other urls will show "Normal".
MIT