Node.js - Modulo Web

Cos'è un Web Server?

Un server Web è un'applicazione software che gestisce le richieste HTTP inviate dal client HTTP, come i browser Web, e restituisce le pagine Web in risposta ai client. I server Web di solito forniscono documenti html insieme a immagini, fogli di stile e script.

La maggior parte dei server Web supporta script lato server, utilizzando linguaggi di scripting o reindirizzando l'attività a un server delle applicazioni che recupera i dati da un database ed esegue una logica complessa e quindi invia un risultato al client HTTP tramite il server Web.

Il server Web Apache è uno dei server Web più comunemente utilizzati. È un progetto open source.

Architettura dell'applicazione Web

Un'applicazione Web è generalmente suddivisa in quattro livelli:

  • Client - Questo livello è costituito da browser Web, browser mobili o applicazioni che possono effettuare richieste HTTP al server Web.

  • Server - Questo livello ha il server Web che può intercettare le richieste fatte dai client e passare loro la risposta.

  • Business- Questo livello contiene il server delle applicazioni utilizzato dal server Web per eseguire l'elaborazione richiesta. Questo livello interagisce con il livello dati tramite il database o alcuni programmi esterni.

  • Data - Questo livello contiene i database o qualsiasi altra fonte di dati.

Creazione di un server Web utilizzando Node

Node.js fornisce un file httpmodulo che può essere utilizzato per creare un client HTTP di un server. Di seguito è riportata la struttura minima del server HTTP che ascolta sulla porta 8081.

Crea un file js denominato 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/');

Quindi creiamo il seguente file html denominato index.htm nella stessa directory in cui hai creato server.js.

File: index.htm

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

Ora eseguiamo server.js per vedere il risultato -

$ node server.js

Verifica l'output.

Server running at http://127.0.0.1:8081/

Fai una richiesta al server Node.js.

Apri http://127.0.0.1:8081/index.htm in qualsiasi browser per vedere il seguente risultato.

Verificare l'output alla fine del server.

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

Creazione di client Web utilizzando Node

È possibile creare un client Web utilizzando httpmodulo. Controlliamo il seguente esempio.

Crea un file js denominato 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();

Ora esegui client.js da un terminale di comando diverso da server.js per vedere il risultato -

$ node client.js

Verifica l'output.

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

Verificare l'output alla fine del server.

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