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 :
 
Ce code donne comme résultat :
Comment lire une requête
- 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 :inputetbase. 
- 
input: c'est l'URL que l'on souhaite analyser. Elle peut être absolue (commehttp://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. Siinputest absolue,baseest 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 :
Exécutez le projet. Ensuite, effectuez une recherche sur le web avec ce chemin : localhost:8080/livres.
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.
- Maintenant, créons l'objet 
URLpour 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'attributhostdu paramètrereq. Voici le code à ajouter : 
const  baseURL  =  req.protocol  +  '://'  +  req.headers.host  +  '/';
const  reqUrl  =  new  URL(req.url,baseURL);
console.log(reqUrl);
- Exécutez le projet avec toujours le même chemin..
 
Et voici le résultat :
Pour la suite, nous utiliserons l'objet URL qui nous intéresse et ignorerons l'objet URL contenant /favicon.ico.
- 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.
- 
- 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'). 
 - Supposons que vous voulez lire l'ID du livre passé dans la requête. C'est simple : il suffit d'utiliser l'attribut 
 
Testons cela avec la requête http://localhost:8080/livres?id=1 :
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 :
Résultat
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');
**Résultat **

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
Résultat
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
- Documentation officielle de W3School : Node.js Tutoriel (consulté le 13 mars 2025)
 - Documentation officielle de Node.js : Node.js v23.9.0 documentation (consulté le 13er mars 2025)
 - « node legacy url.parse deprecated, what to use instead? » sur https://stackoverflow.com/, Obtenir les requêtes grâce à l'objet Url(consulté le 14 mars 2025)
 - Favicon – Wikipédia, Favicon (consulté le 13 mars 2025)
 
Commentaires