JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2223
  • Score
    100M100P100Q118600F
  • License MIT

koa middleware to parse xml request body

Package Exports

  • koa-xml-body

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-xml-body) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

koa-xml-body

Build Status npm version Dependency Status download times

Parse xml request body for Koa

Install

NPM

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 from content-type(such as content-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-length is found, it will be overwritten automatically.
  • onerror: error handler. Default is a noop function. 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 {}. See xml2js Options for 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

MIT