MONOREPO MIDDLEWARE Flashcards
Qu’est-ce qu’un middleware dans Express.js et quel est son rôle?
Un middleware est une fonction qui intervient entre la requête du client et la réponse du serveur. Son rôle est d’exécuter du code, de modifier les objets requête/réponse, de terminer le cycle requête/réponse ou d’appeler le prochain middleware dans la chaîne.
Comment est structuré un middleware et que signifie le paramètre next?
Un middleware est structuré comme une fonction qui reçoit trois paramètres: req (la requête), res (la réponse) et next. Le paramètre next est une fonction qui, lorsqu’elle est appelée, exécute le middleware suivant dans la chaîne.
Comment utiliser un middleware sur une route spécifique dans Express?
Pour utiliser un middleware sur une route spécifique, on l’ajoute comme paramètre supplémentaire lors de la déclaration de la route: router.post(“/api/items”, validationMiddleware, actionMiddleware);
Comment implémenter un middleware d’authentification?
Un middleware d’authentification vérifie si l’utilisateur est authentifié avant de permettre l’accès: const auth = (req, res, next) => {
if (!userAuthenticated) {
return res.status(401).json({ message: “Non autorisé” });
}
req.user = userData; // Stocke les données utilisateur pour les middlewares suivants
next();
};
Comment appliquer un middleware à toutes les routes d’une application?
Pour appliquer un middleware à toutes les routes déclarées après lui, on utilise la méthode .use(): router.use(authMiddleware)
Quelle est la particularité d’un middleware d’erreur et comment l’implémenter?
Un middleware d’erreur possède 4 paramètres (err, req, res, next) et est exécuté quand un middleware en amont produit une erreur. Il permet de gérer les erreurs de manière centralisée:
const errorHandler = (err, req, res, next) => {
console.error(err); res.status(500).json({ message: “Erreur serveur” });
};
app.use(errorHandler);
Comment transmettre des données entre middlewares?
On peut transmettre des données entre middlewares en ajoutant des propriétés à l’objet req:
// Premier middleware
const middleware1 = (req, res, next) => {
req.userData = { id: 123 };
next();
};
// Second middleware qui utilise les données
const middleware2 = (req, res, next) => {
console.log(req.userData.id); // Accès à 123
next();
};
Citez des exemples de middlewares intégrés à Express et expliquez leur utilité.
Express fournit plusieurs middlewares intégrés:
* express.json(): Parse les requêtes avec JSON payload
* express.static(): Sert des fichiers statiques
* express.urlencoded(): Parse les données de formulaire
En quoi les middlewares contribuent-ils à la sécurité d’une application?
Les middlewares contribuent à la sécurité en permettant d’implémenter:
* L’authentification et l’autorisation des utilisateurs
* La validation des entrées
* La protection contre les attaques CSRF, XSS
* Les limites de débit (rate limiting)
* Les en-têtes de sécurité
Comment gérer les erreurs asynchrones dans les middlewares?
Pour gérer les erreurs asynchrones, on peut:
*Utiliser try/catch et appeler next(error)
* Utiliser des fonctions d’enveloppement (wrapper functions)
const asyncMiddleware = fn => (req, res, next) => { Promise.resolve(fn(req, res, next)).catch(next); };