Boas Práticas do Fastify
Um resumo condensado das 25 práticas mais importantes do Fastify para equipes Node.js - extraído de todas as páginas desta seção.
Busque em todas as páginas da documentação
Um resumo condensado das 25 práticas mais importantes do Fastify para equipes Node.js - extraído de todas as páginas desta seção.
Esquematize todos os endpoints públicos: Corpo, parâmetros, query e resposta - Validação JSON Schema.
Defina additionalProperties: false em objetos: Rejeite entradas inesperadas precocemente.
Use esquemas de resposta para velocidade de serialização: Serializadores compilados superam JSON.stringify.
Um plugin por domínio: usuários, pedidos, faturamento como plugins separados - Plugins Fastify.
Envolva plugins compartilhados com fastify-plugin: Banco de dados, autenticação e configuração devem ser globalmente visíveis.
Carregue plugins antes das rotas: Autoload do diretório plugins/ antes do diretório routes/.
Use @fastify/autoload para convenções: Registro previsível baseado em arquivos.
Fábrica de aplicativos para testes: buildApp() exportado de app.ts - Testando Aplicativos Fastify.
Teste com inject(), não supertest: Mais rápido, sem conflitos de porta.
Chame app.close() na limpeza de testes: Evite avisos de handle aberto.
Pino JSON para stdout em produção: Sem pino-pretty em produção - Logging com Pino.
Redija campos sensíveis: authorization, password, cookie na configuração de log.
Propague o ID da requisição: genReqId a partir do header x-request-id.
setErrorHandler centralizado: Formato JSON de erro consistente.
Anexe statusCode a erros operacionais: 404, 422, 401 como erros lançados.
Ajuste os timeouts do servidor após o listen: keepAliveTimeout, headersTimeout em app.server.
Limpe em hooks onClose: Feche pools de banco de dados e conexões Redis em SIGTERM.
Use TypeBox ou Zod type provider: Mantenha esquemas e tipos TypeScript sincronizados.
Gere OpenAPI a partir de esquemas: @fastify/swagger para documentação de contrato.
Desative o logger em testes: { logger: false } na fábrica de aplicativos de teste.
Evite middleware Express no Fastify: Use plugins nativos para encapsulamento.
Perfure antes de reivindicar vitórias de velocidade do Fastify: O banco de dados é geralmente o gargalo - ADR Fastify vs Express.
Versionar APIs de plugins com semver: Mudanças de decorador que quebram afetam todos os consumidores.
Use await app.listen() (Fastify 5): O listen assíncrono é a API atual.
Documente a escolha do framework no ADR: Revise anualmente ou em caso de mudança de carga 10x.
Esquematize todas as rotas públicas. A validação previne entradas ruins; esquemas de resposta aceleram a serialização.
Fastify se a validação de esquema e a taxa de transferência importam. Express se a familiaridade da equipe for a prioridade. Veja a página do ADR.
apps/api/src/{plugins,routes,schemas}/. Compartilhe o pacote de esquemas entre serviços, se necessário.
NestJS quando você precisa de DI, guards e arquitetura modular em escala. Fastify puro para APIs focadas.
Reescreva como um sprint dedicado, não incremental. Handlers Express finos facilitam a portabilidade.
Versões da Stack: Esta página foi escrita para Node.js 24.18.0 (LTS Ativo), npm 10+, TypeScript 5.6+, Express 5, Fastify 5 e NestJS 11.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026