Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

fastify-xml-body-parser

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

Code Climate fastify-xml-body-parser donate button

Known Vulnerabilities NPM quality Travis ci Build Status Coverage Status bitHound Dev Dependencies bitHound Overall Score

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 = {
    attributeNamePrefix : "@_",
    attrNodeName: "attr", //default is 'false'
    textNodeName : "#text",
    ignoreAttributes : true,
    ignoreNameSpace : false,
    allowBooleanAttributes : false,
    parseNodeValue : true,
    parseAttributeValue : false,
    trimValues: true,
    decodeHTMLchar: false,
    cdataTagName: "__cdata", //default is 'false'
    cdataPositionChar: "\\c",
};

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

Worth to mention

Don't forget to check my other projects

  • BigBit standard) : A standard to reprent any number in the universe in comparitively less space and without precision loss. A standard to save space to represent any text string in comparision of UTF encoding.
  • imglab : Speedup and simplify image labeling / annotation. Supports multiple formats, one click annotation, easy interface and much more. There are more than 20k images are annotated every month.
  • अनुमार्गक (anumargak) : The fastest and simple router for node js web frameworks with many unique features.
  • stubmatic : A stub server to mock behaviour of HTTP(s) / REST / SOAP services. You can also mock binary formats.
  • मुनीम (Muneem) : A webframework made for all team members.
  • शब्दावली (shabdawali) : Amazing human like typing effects beyond your imagination.
  • fast-lorem-ipsum : Generate lorem ipsum words, sentences, paragraph very quickly. Better than any generater. Works with NPM, browser, and CLI.

About

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

Resources

License

Releases

No releases published

Packages

No packages published