You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

fastify-xml-body-parser

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fastify-xml-body-parser

Fastify plugin to parse XML payload into JS object

1.0.2
Source
npmnpm
Version published
Weekly downloads
8.7K
5.6%
Maintainers
1
Weekly downloads
 
Created
Source

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

  • Include in package.json
$npm install fastify-xml-body-parser
#or
$yarn add fastify-xml-body-parser
  • 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 opensource projects

  • निम्न (NIMN) : Schema aware object compression. 60% more compressed than JSON. 40% more compressed than msgpack.
  • imglab : Web based tool to label images for object. So that they can be used to train dlib or other object detectors. You can integrate 3rd party libraries for fast labeling.
  • अनुमार्गक (anumargak) : The fastest router for node web servers.
  • fast-xml-parser : Validate XML or Parse XML to JS/JSON rapidly without C/C++ based libraries and no callback. Work with NPM, in all browsers, and CLI.
  • stubmatic : A QA friendly stub server to mock behaviour of HTTP(s) / REST / SOAP services. Now you can create simulators or mock services in few minutes without coding.
  • fast-lorem-ipsum : Generate lorem ipsum words, sentences, paragraph very quickly. Better than any generater. Works with NPM, browser, and CLI.

Keywords

fastify

FAQs

Package last updated on 18 Apr 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.