Mejores Prácticas de Fastify
Un resumen condensado de las 25 prácticas más importantes de Fastify para equipos de Node.js, extraídas de cada página de esta sección.
Busca en todas las páginas de la documentación
Un resumen condensado de las 25 prácticas más importantes de Fastify para equipos de Node.js, extraídas de cada página de esta sección.
Esquematiza cada endpoint público: Cuerpo, parámetros, consulta y respuesta - Validación de JSON Schema.
Establece additionalProperties: false en los objetos: Rechaza la entrada inesperada temprano.
Usa esquemas de respuesta para la velocidad de serialización: Los serializadores compilados superan a JSON.stringify.
Un plugin por dominio: usuarios, pedidos, facturación como plugins separados - Plugins de Fastify.
Envuelve los plugins compartidos con fastify-plugin: La base de datos, la autenticación y la configuración deben ser globalmente visibles.
Carga los plugins antes de las rutas: Carga automáticamente el directorio plugins/ antes del directorio routes/.
Usa @fastify/autoload para las convenciones: Registro predecible basado en archivos.
Fábrica de aplicaciones para pruebas: buildApp() exportado desde app.ts - Pruebas de Aplicaciones Fastify.
Prueba con inject(), no con supertest: Más rápido, sin conflictos de puertos.
Llama a app.close() en la limpieza de pruebas: Evita advertencias de manejadores abiertos.
Pino JSON a stdout en producción: No uses pino-pretty en producción - Registro con Pino.
Redacta campos sensibles: authorization, password, cookie en la configuración de registro.
Propaga el ID de solicitud: genReqId desde el encabezado x-request-id.
setErrorHandler centralizado: Forma JSON de error consistente.
Adjunta statusCode a errores operacionales: 404, 422, 401 como errores lanzados.
Ajusta los tiempos de espera del servidor después de escuchar: keepAliveTimeout, headersTimeout en app.server.
Limpia en los hooks onClose: Cierra los pools de la base de datos y las conexiones de Redis en SIGTERM.
Usa el proveedor de tipos TypeBox o Zod: Mantén los esquemas y los tipos de TypeScript sincronizados.
Genera OpenAPI a partir de esquemas: @fastify/swagger para la documentación del contrato.
Deshabilita el logger en las pruebas: { logger: false } en la fábrica de aplicaciones de prueba.
Evita el middleware de Express en Fastify: Usa plugins nativos para la encapsulación.
Realiza un perfil antes de reclamar las ventajas de velocidad de Fastify: La base de datos suele ser el cuello de botella - ADR de Fastify vs Express.
Versiona las APIs de los plugins con semver: Los cambios disruptivos en los decoradores afectan a todos los consumidores.
Usa await app.listen() (Fastify 5): La escucha asíncrona es la API actual.
Documenta la elección del framework en el ADR: Revisa anualmente o con un cambio de carga de 10x.
Esquematiza cada ruta pública. La validación previene entradas incorrectas; los esquemas de respuesta aceleran la serialización.
Fastify si la validación de esquemas y el rendimiento importan. Express si la familiaridad del equipo es la prioridad. Consulta la página de ADR.
apps/api/src/{plugins,routes,schemas}/. Comparte el paquete de esquemas entre servicios si es necesario.
NestJS cuando necesites DI, guardias y arquitectura modular a escala. Fastify puro para APIs enfocadas.
Reescribe como un sprint dedicado, no incremental. Los manejadores delgados de Express facilitan la portabilidad.
Versiones de la pila: Esta página fue escrita para Node.js 24.18.0 (LTS activa), npm 10+, TypeScript 5.6+, Express 5, Fastify 5 y NestJS 11.
Revisado por Chris St. John·Última actualización: 16 jul 2026