MONOREPO MIDDLEWARE Flashcards

1
Q

Qu’est-ce qu’un middleware dans Express.js et quel est son rôle?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Comment est structuré un middleware et que signifie le paramètre next?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Comment utiliser un middleware sur une route spécifique dans Express?

A

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);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Comment implémenter un middleware d’authentification?

A

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();
};

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Comment appliquer un middleware à toutes les routes d’une application?

A

Pour appliquer un middleware à toutes les routes déclarées après lui, on utilise la méthode .use(): router.use(authMiddleware)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Quelle est la particularité d’un middleware d’erreur et comment l’implémenter?

A

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);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Comment transmettre des données entre middlewares?

A

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();
};

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Citez des exemples de middlewares intégrés à Express et expliquez leur utilité.

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

En quoi les middlewares contribuent-ils à la sécurité d’une application?

A

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é

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Comment gérer les erreurs asynchrones dans les middlewares?

A

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); };

How well did you know this?
1
Not at all
2
3
4
5
Perfectly