koa-xml-bodykoa middleware to parse xml request body
koa-xml-body
Parse xml request body for Koa
Install
Usage
const koa = require('koa')
const xmlParser = require('koa-xml-body')
const app = koa()
app.use(xmlParser())
app.use(function(ctx, next) {
    // the parsed body will store in this.request.body
    // if nothing was parsed, body will be undefined
    ctx.body = ctx.request.body
    return next()
})
koa-xml-body will carefully check and set context.request.body, so it can intergate well with other body parsers such as koa-bodyparser:
// ...
const bodyParser = require('koa-bodyparser')
// ...
app.use(xmlParser())
app.use(bodyParser())
Note:
Current version (v2.x) of koa-xml-body is writtern with ES2015 and for koa@2. If you use koa@1.x, use koa-xml-body@1.x instead.
Options
-  encoding: requested encoding. Default is 
utf8. If not set, the lib will retrive it fromcontent-type(such ascontent-type:application/xml;charset=gb2312). -  limit: limit of the body. If the body ends up being larger than this limit, a 413 error code is returned. Default is 
1mb. -  length: length of the body. When 
content-lengthis found, it will be overwritten automatically. -  onerror: error handler. Default is a 
noopfunction. It means it will eat the error silently. You can config it to customize the response. -  xmlOptions: options which will be used to parse xml. Default is 
{}. Seexml2js Optionsfor details. -  key: A chance to redefine what the property name to use instead of the default 
body (ctx.request.body). 
app.use(xmlParser({
    limit: 128,
    encoding: 'utf8', // lib will detect it from `content-type`
    xmlOptions: {
        explicitArray: false
    },
    key: 'xmlBody', // lib will check ctx.request.xmlBody & set parsed data to it.
    onerror: (err, ctx) => {
        ctx.throw(err.status, err.message);
    }
}))
Licences
评论

