Fastify plugin to serialise JSON responses into XML
npm install fastify-json-to-xml




> Fastify plugin to serialise JSON responses into XML
The fastify-json-to-xml plugin adds an onSend hook that supports serialising 'application/json' responses into XML if:
- The Accept HTTP request header only includes 'application/xml'
- The Accept HTTP request header explicitly includes the 'application/xml' media type before 'application/json'
Install using npm:
``bash`
npm i fastify-json-to-xml
| Plugin version | Fastify version |
| -------------- | --------------- |
| >=2.x | ^5.x |>=1.x <2.x
| | ^4.x |
Please note that if a Fastify version is out of support, then so are the corresponding versions of this plugin
in the table above.
See Fastify's LTS policy for more details.
`js
const Fastify = require("fastify");
const jsonToXml = require("fastify-json-to-xml");
const server = Fastify();
server.register(jsonToXml);
server.get("/", (_req, res) => {
res.send({ example: "I'm an example value!" });
});
server.listen(3000, (err) => {
if (err) throw err;
console.log("Server listening on 3000");
});
`
Make an HTTP GET request to the route above, with application/xml in the accept HTTP request header, and the results will look like so:
`xml`
By default, this plugin will throw an error if the JSON response it is transforming has characters that XML considers invalid, such as "$".
Set replaceInvalidChars: true in the plugin options and they will be replaced with the Unicode replacement character (U+FFFD) instead, and the plugin will not throw an error.
For example:
`json`
{ "$test-key": "test-value" }
Will become:
`xml`
Contributions are welcome, and any help is greatly appreciated!
See the contributing guide for details on how to get started.
Please adhere to this project's Code of Conduct when contributing.
- Aras Abbasi - TypeScript support
fastify-json-to-xml` is licensed under the MIT license.