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 !
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 :
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.
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 }));
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.
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.
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 !
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 ».
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!