Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Middleware Personnalisé | Cadre Express.js
Développement Backend Avec Node.js et Express.js

book
Middleware Personnalisé

Dans Express.js, nous pouvons créer des fonctions middleware personnalisées en utilisant la méthode app.use(). Ces fonctions prennent trois paramètres : req (l'objet de requête), res (l'objet de réponse) et next (une fonction pour passer 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 spécifiant un chemin de route.

Création de Middleware Personnalisé

Voici un exemple de base d'une fonction middleware personnalisée qui enregistre l'horodatage et l'URL de chaque requête entrante :

js
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 passer le contrôle au middleware suivant dans le pipeline.

Exemple du monde réel : Combinaison de middleware intégré et personnalisé

Voici un exemple pratique où nous utilisons un middleware intégré d'Express pour analyser les données JSON, puis créons un middleware personnalisé pour valider ces données avant de continuer :

js
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 :

  • Nous utilisons le middleware intégré express.json() pour analyser les données JSON entrantes ;

  • Nous créons un middleware personnalisé qui vérifie si les données JSON analysées sont manquantes 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 passer à 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 démontre comment nous pouvons utiliser à la fois des middleware intégrés et personnalisés pour valider les données avant qu'elles n'atteignent nos gestionnaires de routes, en s'assurant que les données sont dans le format attendu avant de les traiter davantage.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 9

Demandez à l'IA

expand
ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

We use cookies to make your experience better!
some-alt