Créer un serveur avec node:http
Objectif : Démarrer un serveur HTTP qui écoute sur un port local.
Un script Node.js peut lire et transformer les données de commandes sans être accessible depuis un navigateur. Pour commencer à exposer le service, vous allez créer un serveur HTTP qui reste actif et écoute sur un port local. Ici, vous vérifierez son démarrage ; le traitement d’une route sera abordé dans la leçon suivante.
Créer le serveur avec node:http
Node.js fournit le module node:http pour construire un serveur HTTP sans framework ni dépendance externe. La fonction createServer crée le serveur et reçoit une fonction appelée lorsqu’une connexion lui est adressée. Dans cette première étape, cette fonction ne traite pas encore les détails de la requête : elle termine simplement la réponse afin que le client ne reste pas en attente.
Ajoutez l’import de createServer et la création du serveur dans src/serveur.js. Le fichier ci-dessous conserve les opérations déjà travaillées : le calcul de démonstration pour BR-1042, la lecture du fichier JSON, son affichage, puis sa réécriture. Les montants de démonstration sont fournis à la fonction importée ; gardez les valeurs que vous utilisiez déjà dans votre script si elles diffèrent.
import { createServer } from 'node:http';
import { readFile, writeFile } from 'node:fs/promises';
import { calculerTotal } from './calculer-total.js';
const referenceDemonstration = 'BR-1042';
const montantsDemonstration = [12.5, 8.75];
const totalDemonstration = calculerTotal(montantsDemonstration);
console.log(`${referenceDemonstration} : ${totalDemonstration} €`);
const cheminCommandes = new URL('../data/commandes.json', import.meta.url);
const contenuCommandes = await readFile(cheminCommandes, 'utf8');
const commandes = JSON.parse(contenuCommandes);
console.log(`Nombre de commandes : ${commandes.length}`);
console.log(`Première référence : ${commandes[0]?.reference ?? 'Aucune commande'}`);
await writeFile(cheminCommandes, JSON.stringify(commandes, null, 2), 'utf8');
const serveur = createServer((requete, reponse) => {
reponse.end('Le serveur de la brûlerie est démarré.');
});
const port = 3000;
serveur.listen(port, () => {
console.log(`Serveur en écoute sur http://localhost:${port}`);
});L’objet retourné par createServer représente le serveur. Son appel à listen lui demande d’attendre les connexions sur le port 3000 ; la fonction fournie en second argument s’exécute lorsque l’écoute a démarré. Le message affiché dans le terminal vous donne l’adresse locale à utiliser pour vérifier que le processus est actif.
Vérifier l’écoute locale
Après le lancement, le terminal doit afficher les résultats du script existant, puis le message de démarrage du serveur. Ouvrez ensuite http://localhost:3000 dans un navigateur : la fonction passée à createServer termine la réponse avec le texte prévu. Cette vérification confirme que le serveur reçoit une connexion ; la sélection d’une route et la construction d’une réponse HTTP structurée seront étudiées ensuite.
À retenir
- Importez `createServer` depuis le module intégré `node:http`.
- Utilisez `createServer` pour créer le serveur et `listen` pour écouter sur un port local.
- Le serveur reste actif tant qu’il attend des connexions ; arrêtez-le avec `Ctrl+C`.
- La réponse de démonstration confirme la connexion ; la prochaine leçon détaillera le traitement d’une première route.