Serializer according to the accept header
npm install @fastify/accepts-serializer


Serialize according to the Accept header.
sh
npm i @fastify/accepts-serializer
`$3
| Plugin version | Fastify version |
| ---------------|-----------------|
|
>=6.x | ^5.x |
| ^5.x | ^4.x |
| >=3.x <5.x | ^3.x |
| ^2.x | ^2.x |
| ^1.x | ^1.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.
Usage
`jsconst protobuf = require('protobufjs')
const YAML = require('yamljs')
const msgpack = require('msgpack5')()
const root = protobuf.loadSync('test/awesome.proto')
const AwesomeMessage = root.lookupType('awesomepackage.AwesomeMessage')
const fastify = require('fastify')()
// Global serializers
fastify.register(require('@fastify/accepts-serializer'), {
serializers: [
{
regex: /^application\/yaml$/,
serializer: body => YAML.stringify(body)
},
{
regex: /^application\/x-msgpack$/,
serializer: body => msgpack.encode(body)
}
],
default: 'application/yaml' // MIME type used if Accept header does not match anything
})
// Per-router serializers
const config = {
serializers: [
{
regex: /^application\/x-protobuf$/,
serializer: body => AwesomeMessage.encode(AwesomeMessage.create(body)).finish()
}
]
}
fastify.get('/request', { config }, function (req, reply) {
reply.send({pippo: 'pluto'})
})
`Behavior
For each route, a SerializerManager is defined, which has both per-route and global serializer definitions.
The MIME type
application/json is always handled by fastify if no serializer is registered for that MIME type.If no
default key is specified in configuration, all requests with an unknown Accept` header will be replied to with a 406 response (a boom error is used).Licensed under MIT.