Simple server Web en Node.js

Cette page explique comment créer un serveur web très simple avec Node.js. Comment créer un nouveau projet Node.js et démarrer un serveur http. Le code source est détaillé et expliqué.

Ce qui suit a été testé avec Node.js v18.13.0 sur Ubuntu 22.04.

Espace de travail

Commençons par créer un dossier server pour notre projet :

mkdir server

Déplaçons nous dans le dossier du projet:

cd server

Créez et éditez un nouveau fichier nommé server.js.

touch server.js

Code source

Voici le code source du server, copiez et collez le code dans le fichier server.js.

// Import http module
var http = require('http'); 

// Create web server
var server = http.createServer(function (req, res) {  

    // Home page
    if (req.url == '/') {         
        // Set response for home page
        res.writeHead(200, { 'Content-Type': 'text/html' });         
        res.write('<html><body><h1>Home Page</h1></body></html>');
        res.end();

    }    
    else if (req.url == "/contact") {        
        // Set response for contact page
        res.writeHead(200, { 'Content-Type': 'text/html' });
        res.write('<html><body><h1>Contact page</h1></body></html>');
        res.end();

    }
    else if (req.url == "/json") {        
        // Set JSON content
        res.writeHead(200, { 'Content-Type': 'application/json' });
        res.write('{"name":"John","age":30,"cars":["Ford", "BMW", "Fiat"]}');
        res.end();       
    }
    else {
        res.writeHead(404); 
        res.end('Page not found!');
    }

});

// Listen for incoming requests on port 3000
server.listen(3000); 
console.log('Node.js web server listening on port 3000.')

Explications

Tout d'abord, nous importons le module http utilisé pour créer un serveur http :

var http = require('http'); 

Avec le module http, nous créons un nouveau serveur avec createServer() :

// Create web server
var server = http.createServer(function (req, res) {  

Le paramètre de la fonction est une autre fonction, appelée fonction de callback. Cette fonction de callback est exécutée à chaque fois que le serveur reçoit une requête http. Les deux paramètres de la fonction sont :

Dans la fonction de callback, vérifions si le client a demandé la page d'accueil. Si l'url demandée (req.url) est /, le serveur renvoie la page d'accueil :

// Home page
if (req.url == '/') {         
    // Set response for home page
    res.writeHead(200, { 'Content-Type': 'text/html' });         
    res.write('<html><body><h1>Home Page</h1></body></html>');
    res.end();

}    

Le code de réponse du statut HTTP 200 OK indique que la requête a réussi. 'Content-Type' : 'text/html' indique que nous servons une page HTML. res.write() écritle contenu de la page dans la réponse (ici la page d'accueil HTML). Enfin, res.end() termine le processus de réponse.

Si la page d'accueil n'est pas demandée, nous cherchons un autre chemin, par exemple /contact/

else if (req.url == "/contact") {        
    // Set response for contact page
    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.write('<html><body><h1>Contact page</h1></body></html>');
    res.end();

}

De la même manière, nous pouvons server JSON en modifiant le contenu de la page :

else if (req.url == "/json") {        
    // Set JSON content
    res.writeHead(200, { 'Content-Type': 'application/json' });
    res.write('{"name":"John","age":30,"cars":["Ford", "BMW", "Fiat"]}');
    res.end();       
}

Si aucune des pages précédentes n'a été demandée, nous servons la page d'erreur 404 :

else {
    res.writeHead(404); 
    res.end('Page not found!');
}

Après avoir créé le serveur http, nous devons spécifier le port. Habituellement, le port http est le 80, mais ce port est déjà utilisé par Internet, donc nous choisissons 3000 :

server.listen(3000); 

Cette dernière ligne commence à écouter les requêtes http. Chaque fois qu'une demande est reçue, la fonction de callback est exécutée.

Lancer le server

Pour démarrer le serveur, il suffit d'exécuter la commande suivante :

node server.js

Allez dans votre navigateur et entrez l'URL http://localhost:3000 :

Page d'accueil du serveur web http créé avec Node.js

http://localhost:3000/contact:

Page de contact du serveur web http créée avec Node.js

http://localhost:3000/json:

Contenu JSON servi par le serveur web http créé avec Node.js

Téléchargement

Vous pouvez télécharger le code source Node.js du serveur Web :

server.js

Voir aussi


Dernière mise à jour : 11/01/2023