Vous créez un serveur web avec le module http de Node, répondez aux requêtes et renvoyez du JSON.
Ouvrir cette leçon dans KodokonUn serveur web est un programme qui tourne en continu et attend des requêtes : des demandes envoyées par un client (navigateur, application mobile...). À chaque requête, il renvoie une réponse. Ce dialogue suit le protocole HTTP, le langage commun du web. Node inclut un module http prêt à l'emploi : rien à installer. Dernière notion : le port, un numéro qui identifie un programme précis sur une machine, comme un numéro d'appartement dans un immeuble. Nous utiliserons le port 3000 ; quant à localhost, il désigne simplement votre propre machine.
import http from "node:http";
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader("Content-Type", "text/plain");
res.end("Bonjour depuis mon serveur !");
});
server.listen(3000, () => {
console.log("Serveur sur http://localhost:3000");
});Décortiquons. http.createServer reçoit une fonction appelée à chaque requête, avec deux paramètres : req (la requête reçue) et res (la réponse en cours de construction). res.statusCode = 200 pose le code de statut - 200 signifie « tout va bien ». res.setHeader ajoute un en-tête (header), une métadonnée de la réponse : ici son format, du texte brut. res.end envoie la réponse et la clôt. Enfin, server.listen(3000) met le serveur à l'écoute du port 3000. Ouvrez http://localhost:3000 dans votre navigateur : votre texte s'affiche. Remarquez que le programme ne rend pas la main : il attend les requêtes. Arrêtez-le avec Ctrl+C.
Les serveurs modernes renvoient rarement du texte brut : ils exposent des API qui répondent en JSON, ce format texte que vous connaissez déjà, compris par tous les langages. Deux ajustements : l'en-tête Content-Type devient application/json, et l'objet JavaScript est converti en texte avec JSON.stringify. Profitons-en pour réagir différemment selon req.url, le chemin demandé par le client : c'est la base du routage.
import http from "node:http";
const server = http.createServer((req, res) => {
res.setHeader("Content-Type", "application/json");
if (req.url === "/api/message") {
const body = { message: "Bonjour !", ok: true };
res.statusCode = 200;
res.end(JSON.stringify(body));
return;
}
res.statusCode = 404;
res.end(JSON.stringify({ error: "Introuvable" }));
});
server.listen(3000, () => {
console.log("http://localhost:3000/api/message");
});Le code de statut 404 signifie « introuvable » : le chemin demandé ne correspond à aucune route connue. Notez le return après la première réponse : il empêche le code de continuer et d'envoyer une seconde réponse, ce qui provoquerait une erreur. Pour tester, ouvrez l'adresse dans le navigateur, ou utilisez curl, un outil en ligne de commande qui envoie des requêtes HTTP et affiche la réponse dans le terminal.
curl http://localhost:3000/api/message