Fastify para JavaScript (Node.js): guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Fastify para JavaScript (Node.js): guia completo com exemplos práticos

1. O que é e por que usar

Fastify é um framework web de alta performance para Node.js, inspirado no Hapi e Express, mas com foco em velocidade e baixo consumo de memória. Foi criado em 2016 por desenvolvedores da equipe NearForm e desde então se tornou uma das soluções mais rápidas para criar APIs REST, microsserviços e aplicações web em JavaScript/TypeScript.

O principal motivo para usar Fastify é sua performance. Em testes, ele é capaz de processar de 30 a 40% mais requisições por segundo em comparação com o Express, usando os mesmos recursos. Isso é alcançado graças à arquitetura assíncrona baseada em Node.js streams, parsing eficiente de JSON (através do fast-json-stringify) e um roteador otimizado baseado em Radix Tree (árvore de prefixo compactada).

Além da velocidade, o Fastify oferece validação de esquemas integrada via JSON Schema, cache automático de respostas, suporte nativo a TypeScript, um sistema extensível de plugins e documentação excelente. Isso o torna a escolha ideal para projetos em produção, onde estabilidade e desempenho previsível sob carga são essenciais.

2. Instalação

O Fastify é instalado via npm (Node Package Manager). Certifique-se de ter o Node.js versão 18 ou superior instalado (recomenda-se a versão LTS).

# Instalação básica
npm install fastify

# Para TypeScript (adicional)
npm install -D @types/node typescript

# Para trabalhar com cookies, sessões, etc.
npm install @fastify/cookie @fastify/session

Se você usa yarn ou pnpm:

yarn add fastify
# ou
pnpm add fastify

3. Início rápido — exemplo mínimo funcional

Crie um arquivo server.js e execute-o com node server.js.

// server.js
const fastify = require('fastify')({
  logger: true // Ativa o logger integrado (pino)
});

// Define a rota GET /
fastify.get('/', async (request, reply) => {
  return { hello: 'world' };
});

// Inicia o servidor
const start = async () => {
  try {
    await fastify.listen({ port: 3000 });
    console.log('Servidor rodando em http://localhost:3000');
  } catch (err) {
    fastify.log.error(err);
    process.exit(1);
  }
};

start();

Após iniciar, abra o navegador ou execute curl http://localhost:3000. Você receberá a resposta JSON {"hello":"world"}.

4. Principais métodos/funções/classes

4.1. fastify.get(path, options, handler)

Assinatura: fastify.get(path: string, opts?: RouteShorthandOptions, handler: RequestHandler)

O que faz: Registra um manipulador para requisições HTTP GET no caminho especificado.

fastify.get('/user/:id', async (request, reply) => {
  const { id } = request.params;
  return { userId: id, name: 'João Silva' };
});

4.2. fastify.post(path, options, handler)

Assinatura: fastify.post(path: string, opts?: RouteShorthandOptions, handler: RequestHandler)

O que faz: Registra um manipulador para requisições HTTP POST. Faz o parsing automático do corpo da requisição (JSON, form-data, etc.).

fastify.post('/user', async (request, reply) => {
  const { name, email } = request.body;
  // Salva o usuário no banco de dados...
  return { status: 'criado', name, email };
});

4.3. fastify.register(plugin, opts)

Assinatura: fastify.register(plugin: FastifyPluginAsync | FastifyPluginCallback, opts?: object)

Recommendations