
Création d'un serveur HTTP simple
Apprenez pas a pas comment creer un serveur HTTP minimaliste en Node.js avec `http.createServer()` et `server.listen()` pour repondre "Bonjour le monde !".
Les ingredients de base pour votre premier serveur
Créer un serveur HTTP fonctionnel en Node.js ne nécessite que quelques lignes de code grâce au module `http` intégré. L'objectif ici est de mettre en place le serveur le plus élémentaire possible, capable d'écouter les requêtes sur un port spécifique et de renvoyer une réponse simple, comme le classique "Bonjour le monde !". Cela nous permettra de comprendre le squelette fondamental d'une application serveur Node.js.
Les trois étapes clés sont :
- Importer le module `http` : Pour accéder aux fonctionnalités nécessaires.
- Créer le serveur : En utilisant `http.createServer()`, et en lui fournissant une fonction qui gérera chaque requête entrante.
- Mettre le serveur en écoute : En utilisant `server.listen()`, pour lui dire sur quel port et quelle adresse attendre les connexions des clients.
Voyons comment assembler ces éléments dans un exemple concret.
Code : le serveur "Bonjour le monde !"
Voici le code complet pour un serveur HTTP minimaliste :
// 1. Importer le module http
const http = require('http');
// Définir l'adresse et le port d'écoute
const hostname = '127.0.0.1'; // Adresse IP locale standard (localhost)
const port = 3000; // Un port commun pour le développement
// 2. Créer le serveur
// La fonction passée à createServer est exécutée pour CHAQUE requête reçue
const server = http.createServer((req, res) => {
// req: objet représentant la requête du client (URL, méthode, headers, etc.)
// res: objet représentant la réponse à envoyer au client
// Définir le code de statut HTTP de la réponse (200 = OK)
res.statusCode = 200;
// Définir l'en-tête 'Content-Type' pour indiquer que nous envoyons du texte brut
res.setHeader('Content-Type', 'text/plain; charset=utf-8');
// Ecrire le contenu de la réponse et la terminer
// res.end() est essentiel pour envoyer la réponse et clore la connexion.
res.end('Bonjour le monde !\n');
});
// 3. Mettre le serveur en écoute sur le port et l'adresse définis
// Le callback est exécuté une fois que le serveur écoute réellement.
server.listen(port, hostname, () => {
console.log(`Serveur démarré et écoute sur http://${hostname}:${port}/`);
});Analyse du code :
require('http'): Charge le module HTTP intégré de Node.js.http.createServer((req, res) => { ... }): Crée une instance de serveur. La fonction fléchée est le "request listener". Elle reçoit les objets `req` (requête) et `res` (réponse) pour chaque connexion entrante.res.statusCode = 200;: Indique au client que la requête a été traitée avec succès.res.setHeader('Content-Type', 'text/plain; charset=utf-8');: Informe le client (navigateur) que le contenu envoyé est du texte brut encodé en UTF-8, afin qu'il l'affiche correctement.res.end('Bonjour le monde !\n');: Envoie la chaîne de caractères comme corps de la réponse et signale que la réponse est complète. L'ajout de `\n` (nouvelle ligne) est une convention souvent utilisée pour les réponses en texte brut.server.listen(port, hostname, () => { ... });: Démarre le serveur pour qu'il écoute les requêtes sur le port 3000 de l'adresse 127.0.0.1. Le message dans la console confirme que le serveur est prêt.
Executer et tester votre serveur simple
Pour lancer votre serveur :
- Enregistrez le code ci-dessus dans un fichier, par exemple `simple_server.js`.
- Ouvrez votre terminal ou invite de commande.
- Naviguez jusqu'au répertoire où vous avez enregistré le fichier.
- Exécutez la commande :
node simple_server.js
Vous devriez voir le message `Serveur démarré et écoute sur http://127.0.0.1:3000/` s'afficher dans votre terminal. Le serveur est maintenant actif et attend les requêtes.
Pour tester le serveur :
- Ouvrez votre navigateur web préféré.
- Entrez l'adresse `http://127.0.0.1:3000` (ou `http://localhost:3000`) dans la barre d'adresse et appuyez sur Entrée.
Le navigateur devrait afficher la page avec le texte : `Bonjour le monde !`.
Vous pouvez aussi tester avec un outil en ligne de commande comme `curl` :
curl http://127.0.0.1:3000La sortie dans le terminal sera également `Bonjour le monde !`.
Ce serveur est très basique : il renvoie la même réponse pour n'importe quelle URL demandée (`/`, `/test`, `/autrepage`, etc.) et pour n'importe quelle méthode HTTP (GET, POST...). Les étapes suivantes consistent à analyser la requête (`req.url`, `req.method`) pour renvoyer des réponses différentes, ce qui constitue la base du routage.