import{createServer}from'node:http';consthostname='127.0.0.1';constport=3000;constserver=createServer((req,res)=>{res.statusCode=200;res.setHeader('Content-Type','text/plain');res.end('Hello World');});server.listen(port,hostname,()=>{console.log(`Server running at http://${hostname}:${port}/`);});
Le module http de Node est inclus à la première ligne, c'est lui qui va être en charge du serveur
On définit ensuite une adresse d'hôte et un port pour notre serveur
On crée un objet serveur à la ligne 6. Dans la fonction de rappel les paramêtres représentent des objets associés à la requête http qui est reçu (req) et la réponse retournée (res).
Le statusCode est le code de statut retourné, ici 200 pour un succès
Le Content-Type défini le format de la réponse.
Avec la fonction end() on envoi le texte de la réponse.
La fonction listen à la ligne 12 lance le serveur et le met en mode "écoute"
Pour lancer le serveur
Lancer le programme avec la commande node serveur_hello.js dans un terminal.
Depuis un navigateur accédé à l'url http://localhost:3000/
L'url et ses paramètres
Deux modules à ajouter pour utiliser les commandes de l'image
On peut aussi simplifier l'acquisition des paramètres en ajoutant le paramètre true à la fonction url.parse(). Ça permet d'automatiquement convertir les paramètres de la requête en objet. Ça évite l'utilisation de querystring.
constparams=url.parse(req.url,true).query;
La variable params est un tableau associatif avec le nom des paramètres en clé. Donc si je reçois le paramètre page=1, je peux y accèder avec comme ceci.
console.log(params["page"]);// La valeur affiché sera 1
Exemple de serveur web avec gestion des paramètres
import{createServer}from'node:http';importurlfrom'url';consthostname='localhost';constport=3000;constserver=createServer((req,res)=>{// Récupération des paramètresconstparams=url.parse(req.url,true).query;constroute=url.parse(req.url).pathname;// Affichage des valeurs de la requêteconsole.log('Route : '+route);console.log('Paramètres : '+JSON.stringify(params));// Retourne les paramètres en JSON dans la réponseres.statusCode=200;res.setHeader('Content-Type','application/json');res.write(JSON.stringify(params));res.end();});server.listen(port,hostname,()=>{console.log(`Le serveur est lancé à l'adresse http://${hostname}:${port}/`);});
Pour lancer le code, exécutez le fichier et entrez l'url http://localhost:3000/ dans un navigateur avec n'importe quel route et paramètres. Par exemple http://localhost:3000/test?param1=hello¶m2=world. Le serveur va retourner les paramètres sous format JSON.
import{createServer}from'node:http';importurlfrom'url';consthostname='localhost';constport=3000;constserver=createServer((req,res)=>{// Récupération de la routeconstroute=url.parse(req.url).pathname;res.statusCode=200;res.setHeader('Content-Type','text/plain; charset=utf-8');if(route=='/'){res.write("Bienvenue au jeu d'évasion entrez dans la salle de regroupement.");}elseif(route=='/salle-serveurs'){res.write('Vous êtes dans la salles des serveurs, bonne chance !');}elseif(route=='/etage/1/prof'){res.write('Hé ho, que faîtes-vous dans mon bureau !?!?!');}else{res.write('Page introuvable !');res.statusCode=404;}res.end();});server.listen(port,hostname,()=>{console.log(`Le serveur est lancé à l'adresse http://${hostname}:${port}/`);});
À la ligne 9 on récupère le nom de la route dans l'url. Ensuite avec une série de if..else on peut exécuté un traitement différent selon la route. Si la route est différente de ceux qu'on a codé, on retourne une erreur 404.