A single-purpose koa middleware to only parse JSON request bodies and nothing else.
By default, this libarary parses all valid JSON bodies on POST
, PUT
, and PATCH
requests, and assigns the value to ctx.request.body
.
If there is a JSON parsing error, or if the request is not of valid type, ctx.request.body
is not set, and will be undefined
. If the JSON request payload is too large (by default, the limit is 1mb
), a 413 Payload Too Large
error will be thrown.
To ensure ctx.request.body
contains an empty object {}
(rather than undefined
) on missing/invalid payloads, you can set the fallback
option to true
.
yarn add koa-json-body
or via npm:
npm install koa-json-body --save
fallback
- when set totrue
,ctx.request.body
will always contain{}
upon missing or invalid payloads. (default:false
)limit
- number or string representing the request size limit (default:1mb
)strict
- when set totrue
, koa-json-body will only accept arrays and objects. (default:true
)
Additional options available via co-body.
On a every route:
const body = require('koa-json-body')
app.use(body({ limit: '10kb', fallback: true }))
app.use((ctx, next) => {
console.log(ctx.request.body)
})
On a per-route basis (this example uses koa-router):
const body = require('koa-json-body')({ limit: '10kb' })
app.post('/users', body, (ctx, next) => {
console.log(ctx.request.body)
})
To test, simply run
yarn test
For koa 0.x and 1.x support, see the koa-1 branch.