Middleware en Express JS

Aarón López Sosa
3 min readJul 14, 2019

--

Un middleware es una función que se puede ejecutar antes o después del manejo de una ruta. Esta función tiene acceso al objeto Request, Response y la función next().

Las funciones middleware suelen ser utilizadas como mecanismo para verificar niveles de acceso antes de entrar en una ruta, manejo de errores, validación de datos, etc.

Veamos el siguiente ejemplo:

Tenemos definida una ruta a la cual solo usuarios administradores pueden ingresar, por lo tanto, se necesita comprobar antes de entrar a esa ruta, si el usuario es o no, un administrador. Para ello se enviará un parámetro llamado isAdmin, que puede tener dos valores: true o false. El cual indicará si el usuario es administrador (valor true).

Primero se creará el servidor y se definirá la ruta para administradores, a continuación puedes ver cómo debería quedar.

Una vez creado el servidor, se necesita definir la función middleware, recordemos que un middleware tiene acceso al objeto Request, Response y la función next(), por lo tanto la función que se definirá contará con tres parámetros: req, res y next. Los cuales hacen referencia a los objetos mencionados anteriormente.

function isAdmin(req, res, next) {

}

Después, se agregará la validación para comprobar si el usuario es administrador, utilizando el parámetro isAdmin enviado por el cliente, quedando de la siguiente forma:

Como puedes ver si el valor de req.body.isAdmin es igual a true, entonces se pasa el control de la petición a la declaración de la ruta, utilizando el parámetro next. En caso contrario, se envía un mensaje al usuario advirtiendo que no es un administrador, por lo tanto no tiene permitido ingresar a la ruta /dashboard.

Por último se debe agregar la función middleware a la aplicación:

app.use(isAdmin);

Nota: “Se debe colocar antes de declarar la ruta”

Código completo

Pruebas

A continuación se muestran las respuestas obtenidas para los casos definidos, el primero cuando el usuario sea un administrador y el segundo cuando no lo es. Se utilizará Postman para realizar ambas peticiones.

Respuesta obtenida cuando el usuario es administrador
Respuesta obtenida cuando el usuario no es un administrador

Conclusiones

Las funciones middleware son muy importantes en una aplicación de de Express js porque con ellas se pueden realizar validaciones, gestionar errores, sin la necesidad de llegar hasta la definición de las rutas. Por lo tanto es indispensable aprender a utilizarlas.

--

--

Aarón López Sosa

Web & mobile developer using react/react native and node js