The Koa framework extended for APIs. Optimized for security, scalability, and productivity.
koa-plus is the koa framework (v2) extended for APIs. Optimized for security, scalability, and productivity.
X-Request-Id
headers as X-Client-Request-Id
304 Not Modified
)ctx.debug
(or ctx.app.debug
) logging via the debug modulectx.config
(or, app.context.config)Each feature can be disabled individually.
Install koa-plus
via yarn or npm:
yarn add koa-plus
npm install koa-plus --save
Simply replace your existing koa
require with koa-plus
Old:
const Koa = require('koa')
const app = new Koa()
// ...
New:
const Koa = require('koa-plus')
const app = new Koa()
// ...
Some of the middleware included in koa-plus
allows for options. To pass options to these
middleware, simply pass the options to the constructor.
body
: Use the same options as the koa-body
middleware accepts. Docs
compress
: Use the same options as the koa-compress
middleware accepts. Docs
cors
: Use the same options as the kcors
middleware accepts. Docs
debug
: Set the name
of the debug loggerhelmet
: Use the same options as the helmet
middleware accepts. Docs
json
: Use the same options as the koa-json
middleware accepts. Docs
logger
: Use format
for the logger format, and the remaining options as what morgan
accepts Docs
const Koa = require('koa-plus')
const app = new Koa({
body: {
jsonLimit: '10kb' // Sets the json request body limit to 10k
},
compress: {
threshold: 2048 // Sets the threshold to Gzip responses at 2k (2048 bytes)
},
cors: {
origin: '*' // Set the `Access-Control-Allow-Origin` header to be `*`
},
debug: {
name: 'worker' // Set the debug logger name
},
helmet: {
noCache: true, // Sets the `Cache-Control` headers to prevent caching
frameguard: {
action: 'deny' // Set the `X-Frame-Options' header to be `DENY`
}
},
json: {
pretty: false // Disables pretty-printing
},
logger: {
format: 'dev' // Use the `dev` format of logging
}
})
Each of the middleware in koa-plus can be disabled individually by using the enabled
option.
As an example, to reset koa-plus
back to basic koa
functionality, use the following config:
const Koa = require('koa-plus')
const app = new Koa({
body: {
enabled: false
},
compress: {
enabled: false
},
cors: {
enabled: false
},
debug: {
enabled: false
},
etag: {
enabled: false
},
helmet: {
enabled: false
},
json: {
enabled: false
},
logger: {
enabled: false
},
requestId: {
enabled: false
},
responseTime: {
enabled: false
}
})
To run the tests locally, simply run
yarn test
or
npm test