Middleware dans Express.js: Gestion des demandes intermédiaires

Présentation de Middleware dans Express.js

Middleware in Express.js est un concept puissant qui vous permet d'exécuter des fonctions dans un ordre spécifique pendant le cycle de vie requête-réponse. Ces fonctions peuvent effectuer diverses tâches telles que l'authentification, la journalisation, la validation des données, etc. Middleware les fonctions sont exécutées séquentiellement, et chacune middleware a accès aux objets request et response, ainsi qu'à la next fonction, qui passe le contrôle à la suivante middleware dans la pile.

Pourquoi utiliser Middleware ?

Middleware est essentiel pour modulariser les fonctionnalités de votre application et améliorer sa maintenabilité. Il vous permet de garder vos gestionnaires de routage propres et concentrés sur des tâches spécifiques tout en déchargeant les préoccupations communes ou transversales sur les middleware fonctions. Cette séparation des préoccupations favorise la réutilisation du code et rend votre base de code plus organisée.

Créer et utiliser Middleware

Pour créer middleware dans Express.js, vous définissez une fonction qui prend trois paramètres : request, response et next.

Voici un exemple basique middleware qui enregistre chaque requête entrante :

const logMiddleware =(req, res, next) => {  
  console.log(`Received a ${req.method} request at ${req.url}`);  
  next(); // Pass control to the next middleware  
};  
  
app.use(logMiddleware);  

Vous pouvez utiliser la app.use() méthode pour l'appliquer middleware globalement à toutes les routes, ou vous pouvez l'utiliser de manière sélective pour des routes spécifiques.

Ordre d' Middleware exécution

Middleware les fonctions sont exécutées dans l'ordre dans lequel elles sont définies à l'aide de app.use().

Par exemple:

app.use(middleware1);  
app.use(middleware2);  

Dans ce cas, middleware1 sera exécuté avant middleware2 pour toutes les requêtes entrantes.

Gestion des erreurs dans Middleware

Si une erreur se produit dans une middleware fonction, vous pouvez transmettre l'erreur à la next fonction et Express.js passer automatiquement à la gestion des erreurs middleware.

Voici un exemple :

const errorMiddleware =(err, req, res, next) => {  
  console.error(err);  
  res.status(500).send('Something went wrong!');  
};  
  
app.use(errorMiddleware);  

Utilisation Middleware pour l'authentification

Middleware est couramment utilisé pour implémenter l'authentification et l'autorisation dans les applications Web. Par exemple, vous pouvez créer une middleware fonction qui vérifie si un utilisateur est authentifié avant d'autoriser l'accès à certaines routes :

const authenticateMiddleware =(req, res, next) => {  
  if(req.isAuthenticated()) {  
    return next(); // User is authenticated, proceed to the next middleware  
  }  
  res.redirect('/login'); // User is not authenticated, redirect to login page  
};  
  
app.get('/profile', authenticateMiddleware,(req, res) => {  
  res.send('Welcome to your profile!');  
});  

 

Conclusion

Middleware in Express.js est un outil essentiel pour gérer et améliorer les fonctionnalités de vos applications Web. En créant middleware des fonctions réutilisables, vous pouvez rationaliser votre code, modulariser les préoccupations et améliorer la maintenabilité globale de vos projets. De la gestion de l'authentification à la journalisation et à la gestion des erreurs, middleware vous permet de créer efficacement des applications Web robustes et sécurisées.