koa-async-body

1.0.4 • Public • Published

This middleware is written on top of busboy for koa2.x to parse request bodies and async/await. It will parse content-types with multipart/form-data, application/x-www-form-urlencoded and application/json.

Install

npm install koa-async-body

Example

'use strict';
 
const Koa = require('koa');
const KoaBody = require('koa-async-body');
 
const koaBody = new KoaBody({
    limits: {
        fileSize: 1024*1024*2,
        files: 1,
        parts: 1000,
    }, //You can find the options in https://github.com/mscdex/busboy
    uploadDir: '/var/tmp', //customize the upload directory, default use require('os').tmpDir()
    keyPath: 'foobar' //customize appending to `koa context`, default use `ctx.requestBody`
});
 
const app = new Koa();
 
app.use(koaBody);
 
app.use((ctx)=> {
    if (ctx.requestBody) { //null if no request body
        ctx.body = ctx.requestBody;
    } else {
        ctx.body = 'hello world';
    }
});
 
app.listen(3000);
//curl -v -X POST 'http://localhost:3000' --data-urlencode 'hello=world'

Error handling

app.on('error',(error,ctx)=>{
    // Error('filesSizeLimit')
    // Error('partsLimit')
    // Error('filesLimit')
    // Error('fieldsLimit')
    if(error.message === 'filesSizeLimit')  {
        ctx.status = 400;
        ctx.body = 'filesize too big!!!'
    }
});

Package Sidebar

Install

npm i koa-async-body

Weekly Downloads

1

Version

1.0.4

License

MIT

Last publish

Collaborators

  • erictsangx