logo oujood
🔍

Tutoriel Middlewares Express.js : Guide Complet pour Débutants

OUJOOD.COM

Introduction aux Middlewares dans Express.js

Découvrez comment maîtriser les middlewares dans Express.js pour améliorer votre gestion des requêtes et personnaliser votre application web.

Les middlewares sont des fonctions intermédiaires qui permettent d'exécuter du code supplémentaire entre la réception d'une requête et l'envoi de la réponse. Ils jouent un rôle crucial dans Express.js pour simplifier la gestion des requêtes HTTP, logger les actions, valider les données et bien plus encore.

Qu'est-ce qu'un Middleware ?

Un middleware est une fonction qui a accès aux objets req (requête) et res (réponse), ainsi qu'à la fonction next. Voici sa structure typique :

📋 Copier le code

function(req, res, next) {
// Code à exécuter
next(); // Passe au middleware suivant
}

Explication :

  • req : Contient toutes les informations sur la requête HTTP.
  • res : Permet de contrôler la réponse envoyée au client.
  • next : Transfère le contrôle au middleware suivant dans la pile.

Types de Middlewares

Express.js propose plusieurs types de middlewares :

  • Middlewares intégrés : Fournis directement par Express.js.
  • Middlewares personnalisés : Créés par l'utilisateur pour répondre à des besoins spécifiques.
  • Middlewares tiers : Installés via npm pour ajouter des fonctionnalités supplémentaires (par exemple, morgan, body-parser, etc.).

Exemple 1 : Middleware Simple

Créons un middleware qui affiche un message dans la console chaque fois qu'une requête est reçue.

📋 Copier le code

app.use((req, res, next) => {
console.log('Une requête a été reçue !');
next();
});

Explication : Ce middleware s'exécute pour toutes les routes grâce à app.use(). Il affiche un message dans la console et transfère ensuite le contrôle au middleware suivant.

Exemple 2 : Middleware Basé sur la Route

Appliquons un middleware spécifique à une route donnée.

📋 Copier le code

app.get('/about', (req, res, next) => {
console.log('Route /about visitée');
next();
}, (req, res) => {
res.send('Page À propos');
});

Explication : Ce middleware s'exécute uniquement lorsque la route /about est visitée. Après avoir loggé un message, il passe le contrôle au middleware suivant qui envoie la réponse finale.

Exemple 3 : Logger les Requêtes

Créons un middleware personnalisé pour logger les informations sur chaque requête.

📋 Copier le code

app.use((req, res, next) => {
const currentTime = new Date().toISOString();
console.log(`${currentTime} - Méthode : ${req.method}, URL : ${req.url}`);
next();
});

Explication : Ce middleware loggue l'heure actuelle, la méthode HTTP utilisée et l'URL de la requête avant de passer le contrôle au middleware suivant.

Exemple 4 : Valider les Données

Utilisons un middleware pour valider les données envoyées dans une requête POST.

📋 Copier le code

app.post('/register', (req, res, next) => {
if (!req.body.username || !req.body.email) {
	return res.status(400).send('Données manquantes');
}
next();
}, (req, res) => {
res.send('Inscription réussie');
});

Explication : Ce middleware vérifie si les champs username et email sont présents dans le corps de la requête. S'ils manquent, il renvoie une erreur. Sinon, il passe le contrôle au middleware suivant.

Exemple 5 : Middleware Tiers (morgan)

Morgan est un middleware populaire pour logger les requêtes HTTP.

Installation :

📋 Copier le code

npm install morgan

Utilisation :

📋 Copier le code

const morgan = require('morgan');

app.use(morgan('combined'));

Explication : Ce middleware loggue chaque requête au format combiné, incluant des informations telles que la méthode HTTP, l'URL, le statut, etc.

Exemple 6 : Gérer les Erreurs

Créons un middleware pour capturer et gérer les erreurs non gérées.

📋 Copier le code

app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Une erreur est survenue');
});

Explication : Ce middleware capture toute erreur non gérée et renvoie une réponse d'erreur au client.

Conclusion

Les middlewares sont une fonctionnalité essentielle d'Express.js qui vous permettent de personnaliser et d'étendre votre application web. En pratiquant ces exemples, vous développerez rapidement une compréhension approfondie de leur fonctionnement.

CTA : Essayez dès maintenant ces middlewares dans votre projet Express.js !