Skip to content
This repository has been archived by the owner on May 7, 2024. It is now read-only.

Latest commit

 

History

History
54 lines (44 loc) · 1.67 KB

README.md

File metadata and controls

54 lines (44 loc) · 1.67 KB

@fastify/any-schema

NPM version CI js-standard-style

Save multiple schemas and decide which one to use to serialize the payload.
Internally uses fast-json-stringify to compile the schemas in extremely fast serialization functions, with all the benefits given by the library, such as preventing the leaking of sensitive data.

Install

npm i @fastify/any-schema

Usage

Register the plugin and pass to it an array of schemas with an id, then use reply.schema(id) to decide which schema to use to serialize your data.

const fastify = require('fastify')()

fastify.register(require('@fastify/any-schema'), {
  schemas: [{
    $id: 'schema1',
    type: 'object',
    properties: {
      hello: { type: 'string' }
    }
  }, {
    $id: 'schema2',
    type: 'object',
    properties: {
      winter: { type: 'string' }
    }
  }]
})

fastify.get('/:schema', (req, reply) => {
  reply
    .schema(req.params.schema)
    .send({ hello: 'world' })
})

fastify.listen({ port: 3000 }, err => {
  if (err) throw err
  console.log(`server listening on ${fastify.server.address().port}`)
})

Acknowledgements

This project is kindly sponsored by:

License

Licensed under MIT.