Section courante

A propos

Section administrative du site

Routage

Le routage fait référence à la manière dont les points de terminaison (URI) d'une application répondent aux requêtes des clients. Vous définissez le routage à l'aide des méthodes de l'objet d'application Express correspondant aux méthodes HTTP; par exemple, app.get() pour gérer les requêtes GET et app.post pour gérer les requêtes POST. Vous pouvez également utiliser app.all() pour gérer toutes les méthodes HTTP et app.use() pour spécifier l'intergiciel comme fonction de rappel.

Ces méthodes de routage spécifient une fonction de rappel (parfois appelée «fonctions de gestionnaire») appelée lorsque l'application reçoit une requête vers la route (point final) et la méthode HTTP spécifiées. En d'autres termes, l'application écoute les requêtes correspondant aux routes et méthodes spécifiées, et lorsqu'elle détecte une correspondance, elle appelle la fonction de rappel spécifiée.

En fait, les méthodes de routage peuvent avoir plus d'une fonction de rappel comme paramètres. Avec plusieurs fonctions de rappel, il est important de fournir next comme paramètre à la fonction de rappel, puis d'appeler next() dans le corps de la fonction pour transférer le contrôle au prochain rappel.

Le code suivant est un exemple d'itinéraire très simplifié :

  1. var express = require("express")
  2. var app = express()
  3.  
  4. // répondre par "bonjour" lorsqu'une requête GET est envoyée à la page d'accueil
  5. app.get("/", function (req, res) {
  6.   res.send("Bonjour")
  7. })

Méthodes d'itinéraire

Une méthode de route est dérivée de l'une des méthodes HTTP et est attachée à une instance de la classe express. Le code suivant est un exemple d'itinéraires définis pour les méthodes GET et POST vers la racine de l'application.

  1. // Route de la méthode GET
  2. app.get("/", function (req, res) {
  3.   res.send("Requete GET en accueil")
  4. })
  5.  
  6. // Route de la méthode POST
  7. app.post("/", function (req, res) {
  8.   res.send("Requete POST en accueil")
  9. })

L'Express prend en charge les méthodes correspondant à toutes les méthodes de requête HTTP : GET, POST,... Il existe une méthode de routage spéciale, app.all(), utilisée pour charger les fonctions intergiciel sur un chemin pour toutes les méthodes de requête HTTP. Par exemple, le gestionnaire suivant est exécuté pour les requêtes vers la route «/secret», que ce soit en utilisant GET, POST, PUT, DELETE ou toute autre méthode de requête HTTP prise en charge dans le module http.

  1. app.all("/secret", function (req, res, next) {
  2.   console.log("Accéder à la section secrète ...")
  3.   next() // passer le contrôle au prochain gestionnaire
  4. })

Chemins d'une route

Les chemins de routage, en combinaison avec une méthode de requête, définissent les points de terminaison auxquels les requêtes peuvent être effectuées. Les chemins de routage peuvent être des chaînes de caractères, des modèles de chaînes de caractères ou des expressions régulières.

Les caractères «?», «+», «*», «(» et «)» sont des sous-ensembles de leurs équivalents d'expression régulière. Le trait d'union (-) et le point (.) sont interprétés littéralement par des chemins basés sur des chaînes de caractères.

Si vous devez utiliser le caractère dollar ($) dans une chaîne de caractères de chemin, placez-le en échappé entre ([ et ]). Par exemple, la chaîne de caractères de chemin pour les requêtes à «/donnees/$livre» serait «/donnees/([\$])livre».

Voici quelques exemples de chemins d'itinéraire basés sur des chaînes de caractères. Ce chemin de route fera correspondre les requêtes à la route root, «/» :

  1. app.get("/", function (req, res) {
  2.   res.send("root")
  3. })

Ce chemin d'accès correspondra aux demandes de /apropos :

  1. app.get("/apropos", function (req, res) {
  2.   res.send("apropos")
  3. })

Ce chemin de route correspondra aux demandes de /aleatoire.texte 

  1. app.get("/aleatoire.texte", function (req, res) {
  2.   res.send("aleatoire.texte")
  3. })

Voici quelques exemples de chemins d'itinéraire basés sur des modèles de chaîne de caractères. Ce chemin de route correspondra à acd et abcd :

  1. app.get("/ab?cd", function (req, res) {
  2.   res.send("ab?cd")
  3. })

Ce chemin de route correspondra à abcd, abbcd, abbbcd,... 

  1. app.get("/ab+cd", function (req, res) {
  2.   res.send("ab+cd")
  3. })

Ce chemin d'itinéraire correspondra à abcd, abxcd, abALEATOIREcd, ab123cd,... 

  1. app.get("/ab*cd", function (req, res) {
  2.   res.send("ab*cd")
  3. })

Ce chemin de route correspondra à /abe et /abcde 

  1. app.get("/ab(cd)?e", function (req, res) {
  2.   res.send("ab(cd)?e")
  3. })

Voici des exemples de chemins d'itinéraire basés sur des expressions régulières. Ce chemin de route correspondra à tout ce contenant un «a» :

  1. app.get(/a/, function (req, res) {
  2.   res.send("/a/")
  3. })

Ce chemin d'accès correspondra au butterfly et à la dragonfly, mais pas au butterflyman, au dragonflyman,... :

  1. app.get(/.*fly$/, function (req, res) {
  2.   res.send("/.*fly$/")
  3. })

Paramètres de l'itinéraire

Les paramètres d'itinéraire sont des segments d'URL nommés étant utilisés pour capturer les valeurs spécifiées à leur position dans l'URL. Les valeurs capturées sont renseignées dans l'objet req.params, avec le nom du paramètre d'itinéraire spécifié dans le chemin comme clefs respectives. On aura des structures ressemblant à ceci :

Chemin de route : /utilisateurs/:utilisateurId/livres/:livreId
URL de requête : http://localhost:3000/utilisateur/34/livres/8989
req.params: { "utilisateurId": "34", "livreId": "8989" }

Pour définir des itinéraires avec des paramètres d'itinéraire, spécifiez simplement les paramètres d'itinéraire dans le chemin de l'itinéraire comme indiqué ci-dessous :

  1. app.get("/utilisateurs/:utilisateurId/livres/:livreId", function (req, res) {
  2.   res.send(req.params)
  3. })

Le nom des paramètres d'itinéraire doit être composé de «caractères de mot» ([A-Za-z0-9_]).



Dernière mise à jour : Jeudi, le 4 mars 2021