Utilisation du middleware
Express est un framework web de routage et de middleware qui possède des fonctionnalités minimales : Une application Express est essentiellement une série d’appels de fonctions de middleware.
Les fonctions Middleware sont des fonctions qui ont accès à l’objet request object (req), l’objet réponse (res), et la prochaine fonction du middleware dans le cycle de réponse de l’application. La prochaine fonction du middleware est généralement dénotée par une variable nommée next.
Les fonctions Middleware peuvent effectuer les tâches suivantes :
- Exécuter n’importe quel code.
- Effectuez des modifications à la requête et aux objets de réponse.
- Termine le cycle de réponse de la requête.
- Appeler la prochaine fonction du middleware dans la pile.
Si la fonction middleware actuelle ne met pas fin au cycle de réponse de requête, elle doit appeler next() pour passer le contrôle à la prochaine fonction du middleware. Sinon, la demande sera laissée en suspens.
Une application Express peut utiliser les types de middleware suivants :
- (#middleware.application)
- middleware au niveau du routeur
- (#middleware.error-handling)
- (#middleware.built-in)
- middleware de tierce partie
Vous pouvez charger le middleware au niveau de l’application et du routeur avec un chemin de montage optionnel. Vous pouvez également charger une série de fonctions middleware ensemble, ce qui crée une sous-pile du système middleware à un point de montage.
Outil d’interface de l’application
Lier le middleware au niveau de l’application à une instance de l’objet app object en utilisant app.use() et app. Les fonctions ETHOD(), où METHOD est la méthode HTTP de la requête que la fonction middleware gère (comme GET, PUT ou POST) en minuscule.
Cet exemple montre une fonction middleware sans chemin de montage. La fonction est exécutée chaque fois que l’application reçoit une requête.
const express = require('express');const app = express();
app.use((req, res, next) => { console.log('Time:', Date.now()); next();});import express from 'express';
const app = express();
app.use((req, res, next) => { console.log('Time:', Date.now()); next();});import express, { type Express, type Request, type Response, type NextFunction } from 'express';
const app: Express = express();
app.use((req: Request, res: Response, next: NextFunction) => { console.log('Time:', Date.now()); next();});Cet exemple montre une fonction middleware montée sur le chemin /user/:id. La fonction est exécutée pour n’importe quel type de requête HTTP
sur le chemin /user/:id.
app.use('/user/:id', (req, res, next) => { console.log('Request Type:', req.method); next();});import { type Request, type Response, type NextFunction } from 'express';
app.use('/user/:id', (req: Request, res: Response, next: NextFunction) => { console.log('Request Type:', req.method); next();});Cet exemple montre une route et sa fonction de gestion (système middleware). La fonction gère les requêtes GET vers le chemin /user/:id.
app.get('/user/:id', (req, res, next) => { res.send('USER');});import { type Request, type Response, type NextFunction } from 'express';
app.get('/user/:id', (req: Request, res: Response, next: NextFunction) => { res.send('USER');});Voici un exemple de chargement d’une série de fonctions middleware à un point de montage, avec un chemin de montage.
Il illustre une sous-pile middleware qui affiche les informations de requête pour tout type de requête HTTP vers le chemin /user/:id.
app.use( '/user/:id', (req, res, next) => { console.log('Request URL:', req.originalUrl); next(); }, (req, res, next) => { console.log('Request Type:', req.method); next(); });import { type Request, type Response, type NextFunction } from 'express';
app.use( '/user/:id', (req: Request, res: Response, next: NextFunction) => { console.log(