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
:
npm i fastify-json-to-xml
For Fastify v4.x support, use [email protected]
.
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 version="1.0" encoding="UTF-8"?><response><example>I'm an example value!</example></response>
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:
{ "$test-key": "test-value" }
Will become:
<?xml version="1.0" encoding="UTF-8"?><response><�test-key>test-value</�test-key></response>'
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.