Package Exports
- koa-bodyparser
- koa-bodyparser/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (koa-bodyparser) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
koa-bodyparser
A body parser for koa, based on co-body. support json
, form
and text
type body.
Notice: this module doesn't support parsing multipart format data, please use
@koa/multer
to parse multipart format data.
Install
Usage
const Koa = require('koa');
const bodyParser = require('koa-bodyparser');
const app = new Koa();
app.use(bodyParser());
app.use(async ctx => {
// the parsed body will store in ctx.request.body
// if nothing was parsed, body will be an empty object {}
ctx.body = ctx.request.body;
});
Options
enableTypes: parser will only parse when request type hits enableTypes, support
json/form/text/xml
, default is['json', 'form']
.encoding: requested encoding. Default is
utf-8
byco-body
.formLimit: limit of the
urlencoded
body. If the body ends up being larger than this limit, a 413 error code is returned. Default is56kb
.jsonLimit: limit of the
json
body. Default is1mb
.textLimit: limit of the
text
body. Default is1mb
.xmlLimit: limit of the
xml
body. Default is1mb
.strict: when set to true, JSON parser will only accept arrays and objects. Default is
true
. See strict mode inco-body
. In strict mode,ctx.request.body
will always be an object(or array), this avoid lots of type judging. But text body will always return string type.detectJSON: custom json request detect function. Default is
null
.app.use(bodyParser({ detectJSON: function (ctx) { return /\.json$/i.test(ctx.path); } }));
extendTypes: support extend types:
app.use(bodyParser({ extendTypes: { json: ['application/x-javascript'] // will parse application/x-javascript type body as a JSON string } }));
onerror: support custom error handle, if
koa-bodyparser
throw an error, you can customize the response like:app.use(bodyParser({ onerror: function (err, ctx) { ctx.throw(422, 'body parse error'); } }));
disableBodyParser: you can dynamic disable body parser by set
ctx.disableBodyParser = true
.app.use(async (ctx, next) => { if (ctx.path === '/disable') ctx.disableBodyParser = true; await next(); }); app.use(bodyParser());
Raw Body
You can access raw request body by ctx.request.rawBody
after koa-bodyparser
when:
koa-bodyparser
parsed the request body.ctx.request.rawBody
is not present beforekoa-bodyparser
.
Koa 1 Support
To use koa-bodyparser
with koa@1, please use bodyparser 2.x.
npm install koa-bodyparser@2 --save