Lecture des données de la requête

Par alouragli, 11 mars, 2025
Node.js

Introduction

Dans le dernier article, nous avons appris comment installer Node.js sur notre ordinateur et comment lancer une petite application Node.js qui affiche un message sur le web. Maintenant, attaquons-nous à l'ajout de la possibilité de lire les données de la requête. Premièrement, retournons à l'endroit où nous nous sommes arrêtés. Je vous rappelle que nous en étions ici :

Capture-d-cran-2025-03-13-145041

Ce code donne comme résultat :

Capture-d-cran-2025-03-13-145425

Comment lire une requête

  1. Nous allons lire la requête dans le terminal à l'aide de l'objet URL, qui est capable de transformer une requête en un objet JavaScript. Grâce à ce dernier, on peut très facilement lire les données importantes de la requête. Cet objet contient deux attributs : input et base.
  • input : c'est l'URL que l'on souhaite analyser. Elle peut être absolue (comme http://localhost:8080/livres) ou relative (/livres). Si elle est relative, elle a besoin d'une URL de base pour être interprétée correctement.
  • base : c'est l'URL de référence utilisée pour compléter une URL relative. Si input est absolue, base est ignorée.

En fait, une route absolue est une URL complète qui comprend un protocole (http:// ou https://), un domaine (example.com) et un chemin. Une route relative est une URL incomplète qui ne contient ni protocole ni domaine et doit être résolue par rapport à une URL de base. La seule option pour obtenir la requête dans un projet Node.js est d'utiliser le paramètre req et son attribut url.

Commençons par voir ce que req.url retourne. Indique-t-elle une route absolue ou une route relative ? On le saura grâce à cette commande :

console.log(req.url);

Comme dans cette image :

Capture-d-cran-2025-03-13-204732

Exécutez le projet. Ensuite, effectuez une recherche sur le web avec ce chemin : localhost:8080/livres.

Capture-d-cran-2025-03-13-164646

On découvre alors que req.url renvoie uniquement des chemins relatifs. Le premier, /livres, est normal, mais qu'est-ce que /favicon.ico ? Ce dernier est une petite icône associée à une page web particulière. En effet, lorsqu'un navigateur web accède à une page pour la première fois, il ne demande pas seulement l'URL, mais aussi le favicon.

Capture-d-cran-2025-03-13-165208
  1. Maintenant, créons l'objet URL pour analyser la requête. Avant cela, nous allons créer une variable qui contiendra le protocole de la requête et son domaine, disponible dans l'attribut host du paramètre req. Voici le code à ajouter :
const  baseURL  =  req.protocol  +  '://'  +  req.headers.host  +  '/';
const  reqUrl  =  new  URL(req.url,baseURL);
console.log(reqUrl);
  1. Exécutez le projet avec toujours le même chemin..
Capture-d-cran-2025-03-13-204350

Et voici le résultat :

Capture-d-cran-2025-03-13-170902

Pour la suite, nous utiliserons l'objet URL qui nous intéresse et ignorerons l'objet URL contenant /favicon.ico.

  1. Si vous souhaitez connaître le chemin relatif de la requête, il suffit d'exécuter :
console.log(reqUrl.pathname);

Vous pouvez aussi utiliser n'importe quel autre attribut de l'objet URL visible dans l'image ci-dessus.

    1. Supposons que vous voulez lire l'ID du livre passé dans la requête. C'est simple : il suffit d'utiliser l'attribut searchParams.get('id').
Capture-d-cran-2025-03-13-175113

Testons cela avec la requête http://localhost:8080/livres?id=1 :

Capture-d-cran-2025-03-13-175235

On observe deux affichages : un avec l'ID et un autre avec null. Pourquoi ? Parce que la requête contenant /favicon.ico est aussi prise en compte. Pour s'en débarrasser, utilisons une condition :

if(reqUrl.pathname  !=  '/favicon.ico') {
    var  id  =  reqUrl.searchParams.get('id');
    console.log("L'id est -> "  +  id);

}

Comme illustré ici :

Capture-d-cran-2025-03-13-180325

Résultat

Capture-d-cran-2025-03-13-180640

Oh oui ! Nous avons réussi !

Vous pouvez même ajouter un nouveau paramètre à l'URL. Par exemple, ajoutons un nom bob:

myURL.searchParams.append('nom', 'bob');

Capture-d-cran-2025-03-13-202226

**Résultat **

Capture-d-cran-2025-03-13-202451

Exemple pratique

Supposons que nous allons entrer un nom en paramètre, et que ce même nom s'affichera sur la page web avec la balise <h2>. Vous devez afficher le nom "Bob" sur la page web, de manière à voir Salut Bob !. Je vais vous envoyer la réponse, mais essayez de vous entraîner par vous-même avant de la consulter. La voici :

Réponse

Capture-d-cran-2025-03-13-205649

Résultat

Capture-d-cran-2025-03-13-203500

Conclusion

Félicitations ! Vous savez maintenant parfaitement comment lire une requête dans un projet Node.js. Toutefois, si vous souhaitez développer un grand serveur d'application de cette manière, l'application risque de devenir assez lourde. C'est pourquoi il est préférable d'utiliser un framework pour Node.js appelé Express. Je vous en parlerai la semaine prochaine. Merci et à bientôt !


Références

Commentaires