Practical Programming
Node server : tout savoir sur la création de serveur et le fonctionnement

Node server : tout savoir sur la création de serveur et le fonctionnement

Coder un serveur node est beaucoup plus facile à faire qu’on peut imaginer. Appréhender son fonctionnement est une autre histoire. Pour faciliter votre compréhension des challenges auxquels vous ferez face une fois votre premier node server créé, il est important de comprendre comment il fonctionne.

Que ce soit en node, en PHP ou peu importe le langage, une application ou un site web a besoin d’un serveur pour fonctionner. Ce serveur est un ordinateur – avec plus de puissance processeur et de mémoire RAM, mais sans carte graphique – qui est branché dans un datacenter et constamment allumé. Son rôle est de répondre aux demande des utilisateurs et de leur livrer une page HTML ou de la donnée (au format JSON ou plus rarement XML).

Requête client vers serveur nodejs

Node Server : pour quelle utilité ?

Pourquoi Node.JS pour le web ?

Contrairement à PHP, Ruby on Rails ou Java, un node js server tourne avec un seul thread. C’est à dire qu’il va performer une action à la fois. Par contre, un serveur node js n’est jamais en attente. Si la demande d’un client est chronophage, il a la capacité de lancer l’opération et passer aux suivantes sans attendre que celle-ci soit terminé. On appelle ça l’asynchrone.

Bons usages pour un node server

De ce fait, faire tourner une application ou un site web sur un node server peut se révéler très pertinent dans la mesure où les demandes sont des opérations d’input ou output. Quand on y pense, la plupart des applications ou site web ont pour vocation de vous afficher une donnée qui a été stockée dans une base de donnée ou de vous permettre d’insérer ou modifier de la donnée dans cette même base de donnée.

Par conséquent, votre serveur a besoin de traiter l’ordre que votre client (un navigateur, une application mobile, un objet connecté) vient de lui transmettre et de faire passer à la base de donnée un ordre de lecture ou d’écriture.

Sauf qu’en attendant que la base de donnée réponde – ce qui est plus ou moins rapide suivant la requête et le volume de données – votre node server va aller traiter les demandes des autres clients. Une fois qu’il a la réponse de votre requête, il va vous servir la réponse.

Limites d’un server node

Là où un serveur node est très fort pour répondre aux besoins de la plupart des applications web, il est nettement moins adapté pour des opérations gourmandes en ressources CPU. Traiter de grands jeux de données ou performer de longs calculs sera bien plus efficace en Python qu’en Node.

C’est une des raisons qui pousse les grosses applications web à se structurer autours de microservices. Pour une même application, un serveur node va être en charge de traiter les requêtes HTTP et sous traiter la réalisation d’opérations plus complexes à d’autres services. Ces derniers pourront être développés dans un langage plus adapté.

Node Js create server : Comment créer un serveur node js ?

Avant de pouvoir créer un serveur node, assurez-vous d’avoir installé node.js. Si ce n’est pas déjà fait, voici les liens pour savoir comment faire suivant votre système d’exploitation:

Voici à quoi ressemble le code d’un node js web server extrêmement simple:

const http = require(“http”);

const server = http.createServer(function(req, res) {

// A l’arrivée d’une requête
res.write(“Hello World!”);
res.end();
})

// Lancer le serveur
server.listen(3000)

En 5 lignes, vous avez de quoi recevoir les requêtes des clients et pouvoir leur répondre, du moins un Hello World !

Pour comprendre ce que ce code fait, on va décomposer les éléments importants:
La constante http nous permet d’importer le code venant du module “http” présent nativement dans nodejs.

const http = require("http");

Le module http est un objet javascript, contenant des données et des fonctions dont nous allons avoir besoin pour créer un serveur web.

extrait de code fonction createServer de node js

Dans la suite de notre code, nous utilisons la fonction “createServer” présente dans l’object HTTP. Cette fonction prend en paramètre une callback, une fonction qui est invoquée au moment où la fonction qui l’appelle a terminé.

Cette callback prend 2 paramètres:

L’objet requête (req) qui va contenir les informations envoyées par le client comme, par exemple, l’URL, les paramètres (tout ce qui vient après le “?” dans une URL) ou le navigateur utilisé et sa version.

L’objet réponse (res) qui contient les éléments dont le client a besoin pour considérer sa requête comme terminée avec succès, ou le cas échéant l’erreur à communiquer à l’utilisateur.

Dans ce morceaux de code, on demande à notre node server de répondre à chaque requête qu’il va recevoir en affichant le text brut “Hello World !” puis signaler la fin de la réponse.

Pour lancer et tester votre node server sur votre machine:

  • Ouvrez votre terminal, naviguez jusqu’à votre répertoire
terminal navigation vers espace de travail
Naviguer vers son répertoire de travail
  • Créez un fichier server.js dans votre répertoire de travail
terminal création fichier node server
Créer un fichier “server.js”
  • Collez le code
extrait de code node server
Copiez/collez le code ci-dessus
  • Dans votre terminal, tapez la commande node server.js
terminal lancer serveur node js
Tapez la commande node server.js pour démarrer
  • Ouvrez votre navigateur et tapez localhost:3000 pour lui envoyer une requête
illustration navigateur hello world
Accédez à l’URL localhost:3000 sur votre navigateur pour envoyer une requête à votre serveur

Utiliser un Framework pour un meilleur node server

Vous avez réussi à lancer votre node server en local ? Bravo ! Seulement votre serveur ne sert à rien à part répondre un Hello World. C’est très bien pour un début mais maintenant vous allez vouloir ajouter des comportements différents suivant les actions des utilisateurs, stocker des données en base, gérer des sessions d’utilisateurs authentifiés ou non…

Pour développer une application plus complexe, inutile de tout faire en nodejs pur. On va utiliser un Framework.

Un framework est une librairie qui va abstraire le gros du boulot et rendre l’écriture de votre code serveur plus simple. Les frameworks nodejs les plus connus sont Express, Nest, Koa parmi tant d’autres.

Le même node server en Express.js se présenterait comme ceci:

extrait de code de node server express js

Nous commençons par importer le module express. Contrairement au module HTTP, Express n’est pas inclus avec node. Il faut télécharger ce paquet en utilisant npm via la commande suivante:

npm install express

La ligne suivante sert à lancer express et ses fonctionnalités dont on aura besoin pour coder notre node web server.

const app = express()

On commence par déclarer la première route. Lorsqu’un client enverra une requête HTTP “GET” à l’url ‘localhost:8080/’, notre serveur node lui répondra “Hello World”.

Une fois notre route déclarée, nous pouvons lancer le serveur et lui demander d’écouter le port 8080.

Aller plus loin

Maintenant, pour enrichir votre serveur, vous pouvez utiliser le routeur d’express pour déclarer de nouvelles routes, sur des requêtes GET, PUT, PATCH ou DELETE. 

Vous pouvez également brancher une base de donnée Mongo ou SQL à votre server node en utilisant des packages comme MongoClient, Mongoose ou Sequelize.


Retrouvez nous

N'hésitez pas à nous suivre sur les différents réseaux sociaux !

Most popular

Most discussed

Share This