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
A continuación, se muestra un 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 del mundo real: Combinando middleware integrado y personalizado
A continuación se muestra un ejemplo práctico donde utilizamos un middleware integrado de Express para analizar datos JSON y luego creamos 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:
- Utilizamos el middleware integrado
express.json()
para analizar los datos JSON entrantes; - Creamos 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/data
espera datos JSON válidos. Si el middleware personalizado valida los datos, el manejador de la ruta los recibe y envía una respuesta de éxito.
Este ejemplo demuestra cómo se pueden utilizar tanto middleware integrados como personalizados para validar los 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
Can you explain how to apply middleware to specific routes only?
What are some other use cases for custom middleware in Express.js?
How does the order of middleware affect request handling in Express.js?
Awesome!
Completion rate improved to 2.56
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
A continuación, se muestra un 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 del mundo real: Combinando middleware integrado y personalizado
A continuación se muestra un ejemplo práctico donde utilizamos un middleware integrado de Express para analizar datos JSON y luego creamos 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:
- Utilizamos el middleware integrado
express.json()
para analizar los datos JSON entrantes; - Creamos 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/data
espera datos JSON válidos. Si el middleware personalizado valida los datos, el manejador de la ruta los recibe y envía una respuesta de éxito.
Este ejemplo demuestra cómo se pueden utilizar tanto middleware integrados como personalizados para validar los 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!