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 :input
etbase
.
-
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. Siinput
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 :

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
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'attributhost
du 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