Los middlewares
La cadena de procesamiento que protege e instrumenta cada petición.
Los middlewares
Añade un middleware de autenticación, funciona perfectamente en las rutas nuevas y una ruta antigua sigue siendo accesible sin token. Añade CORS y el navegador sigue rechazando la petición. Añade un limitador de tasa y cuenta todas las peticiones como si procedieran de la misma dirección IP. Estos tres síntomas tienen una única causa: el orden de declaración.
Express no tiene noción de prioridad, de ámbito ni de ciclo de vida. Tiene una lista, recorrida de arriba abajo, y cada elemento decide si cede el paso al siguiente o si termina la petición. Un middleware declarado después de una ruta nunca se aplicará a esa ruta. Un middleware que no llama ni a next() ni a un método de respuesta deja la petición colgada para siempre, hasta el tiempo de espera máximo del cliente, y mientras tanto retiene en memoria los objetos req y res y todo lo que su closure captura. Es una fuga de memoria que no produce ningún mensaje de error. Esta lección le ofrece el modelo exacto y, después, la cadena mínima que hay que implantar en cualquier API seria.
La firma y el contrato
Un middleware es una función de tres argumentos, y un gestor de errores es una función de cuatro argumentos. Express distingue ambos inspeccionando fn.length: si omite el parámetro err o cualquiera de los otros, su gestor de errores se convierte en un middleware ordinario y nunca será llamado ante un error.
Comentarios
Los comentarios funcionan con GitHub Discussions
Inicia sesión con GitHub para participar en la discusión