/fastify-xml-body-parser

Fastify plugin / module to parse XML payload / body into JS object

Primary LanguageJavaScriptMIT LicenseMIT

fastify-xml-body-parser

Fastify plugin / module to parse XML payload / body into JS object

Stubmatic donate button

Usage

  1. Include in package.json
$npm install fastify-xml-body-parser
#or
$yarn add fastify-xml-body-parser
  1. Then import in your code and register with fastify

Sample POST body / payload

<sample>data</sample>
const fastify = require('fastify')()

fastify.register(require('fastify-xml-body-parser'))

fastify.post('/', (req, reply) => {
  console.log(req.body.sample)//data
  reply.send(req.body)
})

fastify.listen(8000, (err) => {
  if (err) throw err
})

The sent reply would be the object:

{
  sample: 'data'
}

Options

This plugin use fast-xml-parser to parse the XML payload. So it accepts all the options supported by fast-xml-parser.

var options = {
  commentPropName: "#comment",
  preserveOrder: true
};

const fastify = require('fastify')()

fastify.register(require('fastify-xml-body-parser'), options)

Additionaly, it supports following options

  • validate: If it is set to true, this plugin validate the payload for valid XML syntax before parsing.
  • contentType: It accepts a string or an array of content types. By default it is set to ["text/xml", "application/xml", "application/rss+xml"].

Note: I've not included body size limit to this plugin because of following reasons

  • I believe it's good to use API gateway to handle non-functional requirements, like security.
  • There are already some plugins which verifies for body length. It'll be a performance degrade if all the plugins are doing the same thing.

License

MIT License

Our other projects and research you must try

  • BigBit standard :
    • Single text encoding to replace UTF-8, UTF-16, UTF-32 and more with less memory.
    • Single Numeric datatype alternative of integer, float, double, long, decimal and more without precision loss.
  • Cytorus: Now be specific and flexible while running E2E tests.
    • Run tests only for a particular User Story
    • Run tests for a route or from a route
    • Customizable reporting
    • Central dashboard for better monitoring
    • Options to integrate E2E tests with Jira, Github etc using Central dashboard Tian.
  • Stubmatic : Create fake webservices, DynamoDB or S3 servers, Manage fake/mock stub data, Or fake/Debug any HTTP(s) call.