Créer un serveur Web HTTP en Node.js avec Code Exemple
⚡ Résumé intelligent
Node.js permet de créer un serveur web fonctionnel en quelques lignes grâce au module http intégré. Ce serveur écoute sur un port spécifique et répond à chaque requête par un code d'état et un corps, tandis qu'un code distinct récupère les données depuis d'autres sites.

Le Node.js Ce framework est principalement utilisé pour créer des applications serveur. Il permet de construire facilement des serveurs web qui diffusent du contenu aux utilisateurs.
Plusieurs modules gèrent les requêtes liées au serveur, les modules intégrés http Le module principal est le suivant. Nous verrons comment créer une application serveur web basique avec Node.js, puis comment récupérer des données depuis un autre site.
Nœud en tant que serveur Web utilisant HTTP
Prenons l'exemple de la création et de l'exécution d'une première application Node.js.
L'application crée un module serveur simple qui écoute sur le port 7000. Lorsqu'une requête est effectuée via le navigateur sur ce port, le serveur envoie une réponse. Bonjour tout le monde réponse au client.
Code Explication
- Le
requirela fonction lit un Javascénario Le fichier est exécuté et son objet d'exportation est renvoyé. Ici, il charge lehttpmodule afin que sa fonctionnalité soit disponible dans l'application. - Une application serveur est créée à partir d'une fonction simple. Cette fonction s'exécute à chaque fois qu'une requête atteint le serveur.
- Lorsqu'une requête est reçue, la réponse est envoyée avec un statut de 200Il s'agit du code d'état standard dans un en-tête HTTP pour une réponse réussie.
- Le corps de la réponse est lui-même une chaîne de caractères. Bonjour tout le monde.
server.listenConfigure l'application pour qu'elle écoute les requêtes client sur le port 7000. Tout port disponible peut être utilisé.
Si la commande s'exécute correctement, le résultat suivant apparaît dans le navigateur.
Sortie
Extrait du résultat :
- Navigation vers l'hôte local URL sur le port 7000 affiche la chaîne Bonjour tout le monde sur la page.
- Le code spécifiant le port 7000, la sortie n'est visible que lors de la navigation vers ce port.
Voici le code pour référence :
var http = require('http'); var server = http.createServer(function(request, response) { response.writeHead(200, { "Content-Type": "text/plain" }); response.end("Hello World\n"); }); server.listen(7000);
Gestion des requêtes GET dans Node.js
Effectuer une requête GET pour récupérer des données depuis un autre site est simple avec Node.js. Auparavant, cela nécessitait… request module, installé à partir de la ligne de commande :
npm install request
Cette commande demande au gestionnaire de paquets Node de télécharger et d'installer le module requis. Une fois l'installation réussie, la ligne de commande affiche le nom et la version du module installé sous la forme suivante : <name>@<version>.
Dans la capture d'écran ci-dessus, le request Le module et son numéro de version ont été téléchargés et installés.
Code Explication
- Le
requestLe module installé à l'étape précédente fournit les fonctions nécessaires pour effectuer des requêtes GET vers des sites web. - Une requête GET est envoyée à un site, et une fonction de rappel est exécutée une fois la réponse reçue. Cette fonction de rappel reçoit trois paramètres :
- Erreur — enregistre toute erreur survenue lors de l'exécution de la requête.
- Réponse — contient les en-têtes HTTP renvoyés avec la réponse.
- Body — contient l'intégralité du contenu de la réponse.
- Le contenu reçu dans le
bodyLe paramètre est affiché dans la console.
Voici le code pour référence :
var request = require("request"); request("https://example.com", function(error, response, body) { // Always check the error parameter before using the body if (error) { console.error("Request failed:", error.message); return; } console.log(body); });
⚠️ Avis de dépréciation : le request module était entièrement déprécié en février 2020 et ne reçoit plus de mises à jour. Il s'installe et s'exécute toujours, l'exemple ci-dessus reste donc valable pour les projets existants, mais npm install request Affiche désormais un avertissement de dépréciation. Le nouveau code doit utiliser la fonction intégrée. fetch fonction présentée dans la section suivante.
Comment effectuer des requêtes HTTP avec la méthode fetch native dans Node.js
Node a inclus un global fetch Cette fonction, disponible depuis la version 18, correspond à l'API déjà fournie par les navigateurs. Aucune installation de paquet n'est requise et la fonction renvoie une promesse, ce qui lui permet de fonctionner directement avec async/await.
// No require and no npm install needed on Node 18 or later async function getData() { try { const response = await fetch("https://example.com"); // fetch does NOT reject on 404 or 500 — check ok yourself if (!response.ok) { throw new Error("HTTP status " + response.status); } const body = await response.text(); console.log(body); } catch (err) { // Network failures and the throw above both land here console.error("Request failed:", err.message); } } getData();
Il convient de noter trois différences par rapport au style de rappel. Premièrement, fetch ne rejette que lors d'une défaillance au niveau du réseau ; une erreur HTTP 404 ou 500 est toujours résolue avec succès, c'est pourquoi response.ok Vérifiez l'existence de cette vérification et pourquoi son omission est l'erreur la plus courante lors du passage de requestDeuxièmement, le corps du message n'est pas transmis avec la réponse ; il doit être lu explicitement avec response.text() pour le texte brut ou response.json() pour JSON, et chacune de ces fonctions renvoie sa propre promesse. Troisièmement, puisque l'appel entier repose sur des promesses, une seule try/catch couvre à la fois la requête et le corps lu, remplaçant entièrement le paramètre de rappel d'erreur en premier.
Pour les scripts qui doivent s'exécuter sur Node 16 ou une version antérieure, installez node-fetch or axios En revanche, étant donné que les deux exposent une interface comparable basée sur les promesses et ne nécessitent qu'une modification de la ligne d'importation une fois l'environnement d'exécution mis à jour.
request vs fetch vs axios : lequel utiliser ?
La plupart des ressources Node utilisent trois clients HTTP, mais un seul constitue un choix judicieux par défaut pour les nouveaux projets. Ils diffèrent par leur niveau de maintenance, la nécessité d'une dépendance et la manière dont ils signalent les erreurs ; le tableau ci-dessous les compare donc.
| Aspect | demandez | récupérer (intégré) | axios |
|---|---|---|---|
| Statut | Déprécié depuis 2020 | Maintenu dans le noyau | Maintenu activement |
| Installation | paquet npm | Aucun sur Node 18+ | paquet npm |
| Style | rappel en cas d'erreur | Promesse | Promesse |
| Analyse JSON | Manuel ou option json | Manuel via response.json() | Automatique |
| Rejets sur les lignes 404 ou 500 | Non | Non | Oui |
Utilisez le fetch pour les nouveaux projets utilisant une version actuelle de Node, car cela n'ajoute aucune dépendance et correspond à l'API du navigateur que les développeurs connaissent déjà. Choisissez axios Lorsque la gestion automatique du JSON, les intercepteurs de requêtes ou le rejet en cas d'erreur permettraient d'économiser du code. request uniquement au sein des applications existantes qui en dépendent déjà et qui prévoient de le remplacer.
Erreurs courantes du serveur Node.js et comment les corriger
La plupart des échecs lors du démarrage d'un premier serveur Node proviennent des ports, des chemins d'accès ou d'une réponse manquante plutôt que du code du serveur lui-même.
- EADDRINUSE : Un autre processus utilise déjà le port. Exécuter
netstat -ano | findstr :7000on Windows,lsof -i :7000on macOS et sous Linux, arrêtez ce processus ou choisissez un autre port. - EACCES sur un port bas : Les ports inférieurs à 1024 nécessitent des privilèges élevés. Utilisez un port supérieur à 1024 en phase de développement, comme 3000 ou 7000.
- Le navigateur se bloque et ne charge jamais : le gestionnaire n'a jamais appelé
response.end()La connexion reste ouverte jusqu'à expiration du délai, donc chaque chemin traversant le gestionnaire doit terminer la réponse. - Module « http » introuvable : Le nom du fichier est mal orthographié ou le script s'exécute dans un navigateur plutôt que dans Node.js. Les modules principaux ne nécessitent aucune installation.
- Les modifications n'apparaissent pas : Node charge le fichier une seule fois au démarrage. Redémarrez le processus après chaque modification, ou exécutez-le sous un observateur tel que
node --watch server.js.




