Middleware (Intergiciel) Express
Lorsque la requête arrive, elle passe à travers chaque intergiciel.
L’intergiciel appelle le prochain avec next()
graph TD
A[Client] -- req --> B[Intergiciel 1];
B[Intergiciel 1] -- res --> A[Client];
B[Intergiciel 1] -- req --> C[Intergiciel 2];
C[Intergiciel 2] -- res --> B[Intergiciel 1];
C[Intergiciel 2] -- req --> D["app.get()"];
D["app.get()"] -- res --> C[Intergiciel 2];
index.ts
import express from "express";
const app = express();
const port = 3000;
function historique(
req: express.Request,
res: express.Response,
next: express.NextFunction
) {
console.log(`${req.method} ${req.url}`);
next();
}
const historiqueParametre = (
req: express.Request,
res: express.Response,
next: express.NextFunction
) => {
const nom = req.query.nom;
console.log(nom);
if (nom === "Etienne") {
next();
} else {
res.status(404).send("Erreur");
}
};
app.use(historique);
app.use(historiqueParametre);
app.get("/", (req: express.Request, res: express.Response) => {
res.send("Hello World");
});
app.listen(port, () => console.log("serveur démaré"));
S'il y a un besoin de contrôler et même refuser l'exécution de routes, l'intergiciel peut courtcircuiter la chaîne comme suit :
mini-securite.ts
const bloquerSiPasEtienne = (
req: express.Request,
res: express.Response,
next: express.NextFunction,
) => {
const nom = req.query.nom;
console.log(nom);
if (nom === 'Etienne') {
next();
} else {
res.status(403).send('Erreur');
}
};
app.use(bloquerSiPasEtienne);
Intergiciel - morgan
Morgan est un intergiciel pour garder l’historique des requêtes traitées par votre serveur Express.
Pour l’installation :
Pour l’utilisation :
Manuel
Intergiciel – express.json()
Intergiciel pour transformer le json reçu du client en objet, remplace req.body.
Utilisation :
utilisateurs.ts
app.use(express.json());
app.post('/', (req: express.Request<Utilisateur>, res: express.Response) => {
const nouvelUtilisateur: Utilisateur = {
id: req.body.id,
utilisateur: req.body.utilisateur,
nom: req.body.nom,
age: req.body.age,
};
listeUtilisateurs.push(nouvelUtilisateur);
res.send(nouvelUtilisateur);
console.log(nouvelUtilisateur);
});
Manuel