Node.js - Module Web

Qu'est-ce qu'un serveur Web?

Un serveur Web est une application logicielle qui gère les requêtes HTTP envoyées par le client HTTP, comme les navigateurs Web, et renvoie des pages Web en réponse aux clients. Les serveurs Web fournissent généralement des documents html avec des images, des feuilles de style et des scripts.

La plupart des serveurs Web prennent en charge les scripts côté serveur, en utilisant des langages de script ou en redirigeant la tâche vers un serveur d'applications qui récupère les données d'une base de données et exécute une logique complexe, puis envoie un résultat au client HTTP via le serveur Web.

Le serveur Web Apache est l'un des serveurs Web les plus couramment utilisés. C'est un projet open source.

Architecture d'application Web

Une application Web est généralement divisée en quatre couches -

  • Client - Cette couche se compose de navigateurs Web, de navigateurs mobiles ou d'applications qui peuvent envoyer des requêtes HTTP au serveur Web.

  • Server - Cette couche a le serveur Web qui peut intercepter les demandes faites par les clients et leur transmettre la réponse.

  • Business- Cette couche contient le serveur d'application qui est utilisé par le serveur Web pour effectuer le traitement requis. Cette couche interagit avec la couche de données via la base de données ou certains programmes externes.

  • Data - Cette couche contient les bases de données ou toute autre source de données.

Création d'un serveur Web à l'aide de Node

Node.js fournit un httpmodule qui peut être utilisé pour créer un client HTTP d'un serveur. Voici la structure minimale du serveur HTTP qui écoute sur le port 8081.

Créez un fichier js nommé server.js -

File: server.js

var http = require('http');
var fs = require('fs');
var url = require('url');

// Create a server
http.createServer( function (request, response) {  
   // Parse the request containing file name
   var pathname = url.parse(request.url).pathname;
   
   // Print the name of the file for which request is made.
   console.log("Request for " + pathname + " received.");
   
   // Read the requested file content from file system
   fs.readFile(pathname.substr(1), function (err, data) {
      if (err) {
         console.log(err);
         
         // HTTP Status: 404 : NOT FOUND
         // Content Type: text/plain
         response.writeHead(404, {'Content-Type': 'text/html'});
      } else {	
         //Page found	  
         // HTTP Status: 200 : OK
         // Content Type: text/plain
         response.writeHead(200, {'Content-Type': 'text/html'});	
         
         // Write the content of the file to response body
         response.write(data.toString());		
      }
      
      // Send the response body 
      response.end();
   });   
}).listen(8081);

// Console will print the message
console.log('Server running at http://127.0.0.1:8081/');

Ensuite, créons le fichier html suivant nommé index.htm dans le même répertoire où vous avez créé server.js.

File: index.htm

<html>
   <head>
      <title>Sample Page</title>
   </head>
   
   <body>
      Hello World!
   </body>
</html>

Maintenant, exécutons le server.js pour voir le résultat -

$ node server.js

Vérifiez la sortie.

Server running at http://127.0.0.1:8081/

Faire une demande au serveur Node.js

Ouvrez http://127.0.0.1:8081/index.htm dans n'importe quel navigateur pour voir le résultat suivant.

Vérifiez la sortie à l'extrémité du serveur.

Server running at http://127.0.0.1:8081/
Request for /index.htm received.

Création d'un client Web à l'aide de Node

Un client Web peut être créé en utilisant httpmodule. Vérifions l'exemple suivant.

Créez un fichier js nommé client.js -

File: client.js

var http = require('http');

// Options to be used by request 
var options = {
   host: 'localhost',
   port: '8081',
   path: '/index.htm'  
};

// Callback function is used to deal with response
var callback = function(response) {
   // Continuously update stream with data
   var body = '';
   response.on('data', function(data) {
      body += data;
   });
   
   response.on('end', function() {
      // Data received completely.
      console.log(body);
   });
}
// Make a request to the server
var req = http.request(options, callback);
req.end();

Maintenant, exécutez client.js à partir d'un terminal de commande différent autre que server.js pour voir le résultat -

$ node client.js

Vérifiez la sortie.

<html>
   <head>
      <title>Sample Page</title>
   </head>
   
   <body>
      Hello World!
   </body>
</html>

Vérifiez la sortie à l'extrémité du serveur.

Server running at http://127.0.0.1:8081/
Request for /index.htm received.