3. Créer un Middleware sur mesure

Pour démystifier totalement les Middleswares, rien de mieux que de créer le nôtre. C’est plutôt radical comme concept, mais cela fonctionne. 👍

Notre objectif va être de créer un nouveau Middleware qui affichera les requêtes reçues par notre API Rest, directement depuis le terminal de commande où s’exécute notre backend :

On affiche les requêtes reçues par notre API Rest dans le terminal de commande.

Pour commencer, puisqu’il va bien falloir se mouiller à un moment, nous allons déclarer un nouveau Middleware nommé logger, directement dans le point d’entrée app.js de notre API Rest :

// Les importations...
const app = express()
const port = 3000
 
const logger = (req, res, next) => {
  console.log(`URL : ${req.url}`)
  next()
}
 
app.use(logger)
 
app.get('/', (req, res) => res.send('Hello, Express!'))
// ...

On a donc déclarer notre Middleware aux lignes 5 à 8, sous la forme d’une fonction prenant trois paramètres :

  • La requête HTTP reçue en entrée, nommée req.
  • La réponse HTTP qui va être exposée au client, nommée res.
  • La méthode next fournie par Express, permettant d’indiquer que le traitement du Middleware est terminé.

Ce modeste Middleware s’occupe simplement de loger l’URL des points de terminaisons appelés par les consommateurs de notre API Rest. Mais ce n’est pas suffisant.

Ensuite, il faut également utiliser ce nouveau Middleware dans notre application Express, grâce à la méthode use(), à la ligne 10.

Vous pouvez déjà tester votre code, et commencer à interroger votre API Rest avec les routes suivantes « / » , « /api/pokemons« , etc. Des messages devraient s’afficher dans votre terminal ! 😉

Avant de continuer, sachez que l’on peut raccourcir notre code, afin qu’il soit plus concis, et surtout plus proche des extraits de code que vous pourrez trouver sur Internet. Dans app.js, nous pouvons modifier notre code comme suit :

// Les importations...
const app = express()
const port = 3000
 
app.use((req, res, next) => {
  console.log('URL : ' + req.url)
  next()
})
 
app.get('/', (req, res) => res.send('Hello, Express!'))
// ...

On obtient une version plus concise de notre code précédent, en se débarrassant simplement de la constante intermédiaire logger.

Eh bien voilà, on vient de créer et mettre en place notre propre Middleware, dans notre API Rest. Ce n’étais pas si méchant que ça finalement ! 😇

Et hop, on continue sur notre lancée !