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
AcceptHTTP request header only includes 'application/xml' - The
AcceptHTTP request header explicitly includes the 'application/xml' media type before 'application/json'
Install using npm:
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.
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.