Mejores Prácticas de Express
Un resumen condensado de las 25 prácticas más importantes de Express 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 Express para equipos de Node.js, extraídas de cada página de esta sección.
Usa Express 5 en Node 24 LTS: El manejo nativo de errores asíncronos elimina el boilerplate del wrapper - Migración a Express 5.
Rutas delgadas, servicios robustos: Los manejadores de rutas parsean, llaman al servicio y devuelven la respuesta. No hay SQL en las rutas.
Registra express.json() antes de las rutas: req.body vacío es el principal error de Express - Orden del Middleware.
Establece límites de tamaño del cuerpo: express.json({ limit: "1mb" }) previene ataques de payload.
Confía en el proxy con recuento de saltos: No true - previene la suplantación de IP - Conciencia del Proxy Inverso.
Limita la tasa después de confiar en el proxy: De lo contrario, todos los clientes comparten la IP del balanceador de carga.
Usa helmet en cada API pública: Los encabezados de seguridad son un endurecimiento gratuito - Middleware de Seguridad.
Configura CORS con orígenes explícitos: Nunca origin: * con credentials: true.
Límites de tasa más estrictos en los puntos finales de autenticación: 10 intentos cada 15 minutos en el inicio de sesión.
Middleware de errores de cuatro argumentos al final: Captura lanzamientos y promesas rechazadas - Manejo de Errores en Express.
Clase AppError personalizada con códigos de estado: Respuestas 404/422/500 consistentes.
Nunca expongas rastreos de pila a los clientes: Registra en el servidor, devuelve un mensaje genérico 500.
Captura 404 antes del manejador de errores: Las rutas desconocidas necesitan un manejo explícito.
Limita la autenticación a routers protegidos: /health y los webhooks permanecen públicos.
Usa Router por dominio: /users, /orders en archivos separados.
Deshabilita x-powered-by: app.disable("x-powered-by").
Establece tiempos de espera del servidor: keepAliveTimeout, headersTimeout, requestTimeout en el servidor subyacente.
Apagado elegante en SIGTERM: Cierra el servidor antes de salir para despliegues sin tiempo de inactividad.
Valida la entrada con Zod en el límite: Antes de la capa de servicio, no dentro.
Usa res.status(n).json() no res.send(status): Express 5 eliminó el patrón antiguo.
Las rutas comodín usan la sintaxis /*splat: Cambio importante en Express 5 desde /*.
Realiza un perfil antes de cambiar a Fastify: La base de datos suele ser el cuello de botella - Rendimiento en Express.
Configuración del entorno a través de process.env + esquema: No puertos o secretos codificados.
Pruebas de integración con supertest: Prueba el orden del middleware y las formas de error.
Documenta el contrato de errores de la API en OpenAPI: La salida del middleware de errores debe coincidir con la especificación.
El orden del middleware: el analizador de cuerpo después de las rutas, o el limitador de tasa antes de confiar en el proxy. Corrige el orden antes de optimizar cualquier otra cosa.
Express si el equipo lo conoce y el rendimiento es adecuado. Fastify si quieres validación de esquemas y un mayor rendimiento base. Consulta ADR de Fastify vs Express.
Sí. Extiende Request para userId y formas de cuerpo validadas. Consulta Tipado de Manejadores de Express y Fastify.
src/routes/, src/services/, src/middleware/, src/app.ts, src/server.ts. Un archivo de router por dominio.
Úsalo como referencia, no como plantilla de producción. Las aplicaciones modernas necesitan TypeScript, ESM y un manejo estructurado de errores desde el primer día.
Versiones de la pila: Esta página fue escrita para Node.js 24.18.0 (LTS Activo), npm 10+, TypeScript 5.6+, Express 5, Fastify 5 y NestJS 11.
Revisado por Chris St. John·Última actualización: 16 jul 2026