Création de Middleware Personnalisé
Dans Express.js, il est possible de créer des fonctions de middleware personnalisées à l'aide de la méthode app.use()
. Ces fonctions prennent trois paramètres : req
(l'objet requête), res
(l'objet réponse) et next
(une fonction permettant de transférer le contrôle au middleware suivant dans la chaîne). Le middleware personnalisé peut être appliqué globalement à toutes les routes ou à des routes spécifiques en précisant un chemin de route.
Création d'un middleware personnalisé
Voici un exemple basique d'une fonction de middleware personnalisée qui enregistre l'horodatage et l'URL de chaque requête 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.
});
Dans cet exemple, le middleware personnalisé enregistre l'horodatage et l'URL de chaque requête entrante dans la console. La fonction next()
est appelée pour transférer le contrôle au middleware suivant dans la chaîne.
Exemple réel : Combinaison de middlewares intégrés et personnalisés
Voici un exemple pratique où un middleware intégré d’Express est utilisé pour analyser des données JSON, puis un middleware personnalisé est créé pour valider ces données avant de poursuivre :
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.');
});
Dans cet exemple :
- Le middleware intégré
express.json()
est utilisé pour analyser les données JSON entrantes ; - Un middleware personnalisé est créé pour vérifier si les données JSON analysées sont absentes ou vides. Si c’est le cas, il envoie une réponse 400 Bad Request avec un message d’erreur. Si les données sont valides, il appelle
next()
pour poursuivre vers la route ; - La route
/api/data
attend des données JSON valides. Si le middleware personnalisé valide les données, le gestionnaire de route les reçoit et envoie une réponse de succès.
Cet exemple illustre comment utiliser à la fois des middlewares intégrés et personnalisés pour valider les données avant qu’elles n’atteignent les gestionnaires de routes, garantissant ainsi que les données sont dans le format attendu avant tout traitement ultérieur.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 2.56
Création de Middleware Personnalisé
Glissez pour afficher le menu
Dans Express.js, il est possible de créer des fonctions de middleware personnalisées à l'aide de la méthode app.use()
. Ces fonctions prennent trois paramètres : req
(l'objet requête), res
(l'objet réponse) et next
(une fonction permettant de transférer le contrôle au middleware suivant dans la chaîne). Le middleware personnalisé peut être appliqué globalement à toutes les routes ou à des routes spécifiques en précisant un chemin de route.
Création d'un middleware personnalisé
Voici un exemple basique d'une fonction de middleware personnalisée qui enregistre l'horodatage et l'URL de chaque requête 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.
});
Dans cet exemple, le middleware personnalisé enregistre l'horodatage et l'URL de chaque requête entrante dans la console. La fonction next()
est appelée pour transférer le contrôle au middleware suivant dans la chaîne.
Exemple réel : Combinaison de middlewares intégrés et personnalisés
Voici un exemple pratique où un middleware intégré d’Express est utilisé pour analyser des données JSON, puis un middleware personnalisé est créé pour valider ces données avant de poursuivre :
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.');
});
Dans cet exemple :
- Le middleware intégré
express.json()
est utilisé pour analyser les données JSON entrantes ; - Un middleware personnalisé est créé pour vérifier si les données JSON analysées sont absentes ou vides. Si c’est le cas, il envoie une réponse 400 Bad Request avec un message d’erreur. Si les données sont valides, il appelle
next()
pour poursuivre vers la route ; - La route
/api/data
attend des données JSON valides. Si le middleware personnalisé valide les données, le gestionnaire de route les reçoit et envoie une réponse de succès.
Cet exemple illustre comment utiliser à la fois des middlewares intégrés et personnalisés pour valider les données avant qu’elles n’atteignent les gestionnaires de routes, garantissant ainsi que les données sont dans le format attendu avant tout traitement ultérieur.
Merci pour vos commentaires !