Maison  >  Article  >  interface Web  >  Comprendre le middleware dans Express.js avec Node.js - Partie 9

Comprendre le middleware dans Express.js avec Node.js - Partie 9

Patricia Arquette
Patricia Arquetteoriginal
2024-09-21 06:29:49815parcourir

Understanding Middleware in Express.js with Node.js - Part 9

Comprendre le middleware dans Express.js : la méthode simple

Le middleware dans Express.js peut sembler un peu technique, mais une fois que vous avez compris, c'est assez simple. C'est comme un arrêt au stand dans une course : les demandes arrivent et avant d'atteindre la ligne d'arrivée (votre gestionnaire d'itinéraire), elles font quelques arrêts à différents points pour être modifiées, vérifiées ou simplement enregistrées.

Dans cet article, nous expliquerons ce qu'est un middleware, comment l'utiliser et vous montrerons quelques exemples concrets. Rendons cela aussi simple et pratique que possible !


Alors, qu’est-ce que le middleware exactement ?

Imaginez que chaque requête adressée à votre serveur soit une voiture en voyage. Le middleware est comme une série de points de contrôle que chaque voiture doit franchir avant d’atteindre sa destination. À chaque point de contrôle (middleware), quelque chose se passe : peut-être que la voiture est lavée, peut-être qu'elle récupère des collations, ou peut-être qu'on lui dit de faire demi-tour et de rentrer chez elle !

En termes de codage, le middleware n'est qu'une fonction qui se situe entre la requête et la réponse. Il peut :

  • Exécutez du code.
  • Modifiez la demande ou la réponse.
  • Empêchez la demande d'aller plus loin.
  • Transmettez-le au prochain middleware.

Voici un exemple super basique :

app.use((req, res, next) => {
  console.log('A request came in!');
  next(); // Pass the baton to the next middleware
});

Chaque fois qu'une requête arrive sur votre serveur, il enregistre un message, puis passe le contrôle au prochain middleware ou gestionnaire de route.


Middleware intégré : les outils prêts à l'emploi d'Express

Express est livré avec quelques fonctions middleware intégrées qui facilitent la vie. En voici quelques-uns que vous utiliserez probablement tout le temps :

1- express.json() : Celui-ci vous aide à gérer les données JSON entrantes.

app.use(express.json());

2- express.static() : Vous souhaitez servir des fichiers statiques comme des images ou du CSS ? Ce middleware est là pour vous.

app.use(express.static('public'));

3- express.urlencoded() : Il aide à analyser les données envoyées via les formulaires HTML.

app.use(express.urlencoded({ extended: true }));

Middleware personnalisé : créez le vôtre

Vous pouvez également créer votre propre middleware pour gérer des tâches spécifiques telles que la journalisation ou la vérification si un utilisateur est connecté.

Exemple : Enregistreur simple

app.use((req, res, next) => {
  console.log(`Request Method: ${req.method}, URL: ${req.url}`);
  next();
});

Ceci enregistre la méthode HTTP et l'URL chaque fois qu'une requête arrive sur votre serveur. C'est idéal pour suivre ce qui se passe avec votre application.

Exemple : Vérification d'authentification

const checkAuth = (req, res, next) => {
  if (!req.headers.authorization) {
    return res.status(403).send('You shall not pass! (Unauthorized)');
  }
  next(); // Allow the request to continue if authorized
};

app.use(checkAuth);

Ici, si une requête n'a pas d'en-tête d'autorisation, elle est bloquée avec un message « 403 Forbidden ». Sinon, cela se transmet.


Utilisation d'un middleware tiers

Vous n'avez pas envie de tout écrire vous-même ? Bonne nouvelle : Express fonctionne avec des tonnes de middleware tiers qui peuvent gérer les tâches à votre place.

Exemple : Morgan pour Logging

morgan est un middleware populaire pour la journalisation des requêtes. Pour l'utiliser :

1- Installez-le :

npm install morgan

2- Ajoutez-le à votre application :

const morgan = require('morgan');
app.use(morgan('dev'));

Désormais, chaque fois qu'une demande arrive, vous recevrez un joli journal formaté dans votre terminal.

Exemple : cors pour les demandes d'origine croisée

Le middleware Cors permet à votre application de gérer les requêtes provenant d'autres domaines (très utile lors de la création d'API).

1- Installez-le :

npm install cors

2- Utilisez-le :

const cors = require('cors');
app.use(cors());

C'est ça ! Votre application peut désormais gérer les requêtes d’origine croisée sans transpirer.


Middleware pour des itinéraires spécifiques

Vous n'êtes pas toujours obligé d'appliquer un middleware à chaque itinéraire de votre application. Parfois, vous souhaitez uniquement qu'il s'exécute sur des sites spécifiques.

app.get('/dashboard', checkAuth, (req, res) => {
  res.send('Welcome to the Dashboard');
});

Ici, le middleware checkAuth ne s'exécute que lorsque quelqu'un tente d'accéder à la route /dashboard. S’ils ne sont pas autorisés, ils n’entrent pas !


Gestion des erreurs avec le middleware

Parfois, les choses tournent mal. C’est là que le middleware de gestion des erreurs s’avère utile. Cela a l'air un peu différent : il faut quatre arguments : err, req, res et next.

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

Ce middleware détecte les erreurs et renvoie un message convivial « 500 Internal Server Error ».


Conclusion

Le middleware est comme le couteau suisse d'Express.js. Il vous aide à gérer les demandes, à gérer les erreurs et à ajouter des fonctionnalités intéressantes telles que la journalisation ou l'authentification. Que vous utilisiez les options intégrées, écriviez les vôtres ou utilisiez des outils tiers, le middleware maintient votre application modulaire et gérable.

Merci d'avoir lu et bon codage ! ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn