Creación de Middleware Personalizado
Desliza para mostrar el menú
En Express.js, es posible crear funciones de middleware personalizadas utilizando el método app.use(). Estas funciones reciben tres parámetros: req (el objeto de solicitud), res (el objeto de respuesta) y next (una función para pasar el control al siguiente middleware en la cadena). El middleware personalizado puede aplicarse globalmente a todas las rutas o a rutas específicas especificando una ruta concreta.
Creación de middleware personalizado
Ejemplo básico de una función de middleware personalizada que registra la marca de tiempo y la URL de cada solicitud entrante:
app.use((req, res, next) => {
const timestamp = new Date().toISOString();
const url = req.url;
console.log(`[${timestamp}] ${url}`);
next(); // Pass control to the next middleware.
});
En este ejemplo, el middleware personalizado registra la marca de tiempo y la URL de cada solicitud entrante en la consola. Se llama a la función next() para pasar el control al siguiente middleware en la cadena.
Ejemplo real: combinación de middleware integrado y personalizado
Ejemplo práctico en el que se utiliza un middleware integrado de Express para analizar datos JSON y luego se crea un middleware personalizado para validar esos datos antes de continuar:
const express = require('express');
const app = express();
// Use built-in middleware to parse JSON data.
app.use(express.json());
// Custom middleware to validate JSON data.
app.use((req, res, next) => {
const jsonData = req.body;
if (!jsonData || Object.keys(jsonData).length === 0) {
// If the JSON data is missing or empty, send an error response.
return res.status(400).json({ error: 'Invalid JSON data' });
}
// Data is valid; proceed to the next middleware or route.
next();
});
// Route that expects valid JSON data.
app.post('/api/data', (req, res) => {
const jsonData = req.body;
res.status(200).json({ message: 'Data received', data: jsonData });
});
app.listen(3000, () => {
console.log('Server is running on port 3000.');
});
En este ejemplo:
- Se utiliza el middleware integrado
express.json()para analizar los datos JSON entrantes; - Se crea un middleware personalizado que verifica si los datos JSON analizados están ausentes o vacíos. Si es así, envía una respuesta 400 Bad Request con un mensaje de error. Si los datos son válidos, llama a
next()para continuar con la ruta; - La ruta
/api/dataespera datos JSON válidos. Si el middleware personalizado valida los datos, el controlador de la ruta los recibe y envía una respuesta de éxito.
-
Línea 1: importa el framework Express.js;
-
Línea 2: crea una instancia de aplicación Express llamando a
express(). El objetoappresultante se utiliza para definir rutas, middleware y manejar solicitudes HTTP; -
Línea 5: habilita el middleware incorporado
express.json(). Este middleware analiza automáticamente los cuerpos de las solicitudes JSON entrantes y pone los datos a disposición a través dereq.body; -
Líneas 8-18: definen un middleware personalizado utilizado para validar los datos JSON entrantes;
-
verifica si
req.bodycontiene datos; -
devuelve una respuesta
400 Bad Requestsi el cuerpo de la solicitud falta o está vacío; -
llama a
next()si los datos JSON son válidos y continúa al siguiente middleware o manejador de ruta; -
Líneas 21-24: definen una ruta
POSTen/api/data; -
recupera los datos JSON enviados desde
req.body; -
devuelve una respuesta
200 OKque contiene un mensaje de confirmación y los datos recibidos; -
Líneas 26-28: inicia la aplicación Express y comienza a escuchar solicitudes en el puerto
3000.
Este ejemplo demuestra cómo se pueden utilizar tanto middleware incorporados como personalizados para validar datos antes de que lleguen a los manejadores de rutas, asegurando que los datos estén en el formato esperado antes de procesarlos.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Creación de Middleware Personalizado
En Express.js, es posible crear funciones de middleware personalizadas utilizando el método app.use(). Estas funciones reciben tres parámetros: req (el objeto de solicitud), res (el objeto de respuesta) y next (una función para pasar el control al siguiente middleware en la cadena). El middleware personalizado puede aplicarse globalmente a todas las rutas o a rutas específicas especificando una ruta concreta.
Creación de middleware personalizado
Ejemplo básico de una función de middleware personalizada que registra la marca de tiempo y la URL de cada solicitud entrante:
app.use((req, res, next) => {
const timestamp = new Date().toISOString();
const url = req.url;
console.log(`[${timestamp}] ${url}`);
next(); // Pass control to the next middleware.
});
En este ejemplo, el middleware personalizado registra la marca de tiempo y la URL de cada solicitud entrante en la consola. Se llama a la función next() para pasar el control al siguiente middleware en la cadena.
Ejemplo real: combinación de middleware integrado y personalizado
Ejemplo práctico en el que se utiliza un middleware integrado de Express para analizar datos JSON y luego se crea un middleware personalizado para validar esos datos antes de continuar:
const express = require('express');
const app = express();
// Use built-in middleware to parse JSON data.
app.use(express.json());
// Custom middleware to validate JSON data.
app.use((req, res, next) => {
const jsonData = req.body;
if (!jsonData || Object.keys(jsonData).length === 0) {
// If the JSON data is missing or empty, send an error response.
return res.status(400).json({ error: 'Invalid JSON data' });
}
// Data is valid; proceed to the next middleware or route.
next();
});
// Route that expects valid JSON data.
app.post('/api/data', (req, res) => {
const jsonData = req.body;
res.status(200).json({ message: 'Data received', data: jsonData });
});
app.listen(3000, () => {
console.log('Server is running on port 3000.');
});
En este ejemplo:
- Se utiliza el middleware integrado
express.json()para analizar los datos JSON entrantes; - Se crea un middleware personalizado que verifica si los datos JSON analizados están ausentes o vacíos. Si es así, envía una respuesta 400 Bad Request con un mensaje de error. Si los datos son válidos, llama a
next()para continuar con la ruta; - La ruta
/api/dataespera datos JSON válidos. Si el middleware personalizado valida los datos, el controlador de la ruta los recibe y envía una respuesta de éxito.
-
Línea 1: importa el framework Express.js;
-
Línea 2: crea una instancia de aplicación Express llamando a
express(). El objetoappresultante se utiliza para definir rutas, middleware y manejar solicitudes HTTP; -
Línea 5: habilita el middleware incorporado
express.json(). Este middleware analiza automáticamente los cuerpos de las solicitudes JSON entrantes y pone los datos a disposición a través dereq.body; -
Líneas 8-18: definen un middleware personalizado utilizado para validar los datos JSON entrantes;
-
verifica si
req.bodycontiene datos; -
devuelve una respuesta
400 Bad Requestsi el cuerpo de la solicitud falta o está vacío; -
llama a
next()si los datos JSON son válidos y continúa al siguiente middleware o manejador de ruta; -
Líneas 21-24: definen una ruta
POSTen/api/data; -
recupera los datos JSON enviados desde
req.body; -
devuelve una respuesta
200 OKque contiene un mensaje de confirmación y los datos recibidos; -
Líneas 26-28: inicia la aplicación Express y comienza a escuchar solicitudes en el puerto
3000.
Este ejemplo demuestra cómo se pueden utilizar tanto middleware incorporados como personalizados para validar datos antes de que lleguen a los manejadores de rutas, asegurando que los datos estén en el formato esperado antes de procesarlos.
¡Gracias por tus comentarios!