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.
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
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.')
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 :
req
est un objet contenant des informations sur la requête HTTP.res
est la réponse que votre fonction va renvoyer au client.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.
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 :
http://localhost:3000/contact:
Vous pouvez télécharger le code source Node.js du serveur Web :