Integration with Fastify

Fastify is one of the popular HTTP server frameworks for Node.js..

Installation

npm i fets fastify

Example

import fastify, { FastifyReply, FastifyRequest } from 'fastify'
import { createRouter, Response } from 'fets'
 
const app = fastify()
 
const router = createRouter().route({
  method: 'GET',
  path: '/greetings',
  schemas: {
    responses: {
      200: {
        type: 'object',
        properties: {
          message: {
            type: 'string'
          }
        },
        required: ['message'],
        additionalProperties: false
      }
    }
  },
  handler: () => Response.json({ message: 'Hello World!' })
})
 
app.route({
  method: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],
  url: '/*',
  async handler(req, reply) {
    const response = await router.handleNodeRequest(req, {
      req,
      reply
    })
 
    if (response === undefined) {
      void reply.status(404).send('Not found.')
      return reply
    }
 
    response.headers.forEach((value, key) => {
      void reply.header(key, value)
    })
 
    void reply.status(response.status)
 
    void reply.send(response.body)
  }
})
 
app.listen(4000)