Node.js - Modulo Web

Cos'è un Server Web?

Ciao, futuri programmatori! Oggi ci immergeremo nel mondo affascinante dei server web. Immagina un server web come un amichevole bibliotecario sempre pronto a consegnarti il libro (o nel nostro caso, la pagina web) che stai cercando.

Node.js - Web Module

Un server web è un pezzo di software che risponde alle richieste dei browser web. Quando digiti un URL nel tuo browser, stai essenzialmente chiedendo a un server web di darti una pagina specifica. Il server poi recupera quella pagina e la invia indietro al tuo browser.

Facciamo una semplice analogia per spiegarlo:

  1. Tu (il client) entri in una biblioteca (l'internet).
  2. Chiedi al bibliotecario (il server web) un libro specifico (una pagina web).
  3. Il bibliotecario recupera il libro e te lo consegna.
  4. Leggi il libro (il tuo browser visualizza la pagina web).

Semplice, vero? Ora, vediamo come possiamo creare il nostro server web utilizzando Node.js!

Architettura dell'Applicazione Web

Prima di iniziare a programmare, capiremo la base dell'architettura di un'applicazione web. È come comprendere il progetto di una casa prima di costruirarla.

Una tipica applicazione web è composta da tre componenti principali:

  1. Client: Solitamente un browser web (come Chrome o Firefox) che invia richieste al server.
  2. Server: Questo è dove gira la nostra applicazione Node.js. Riceve richieste dai client e invia risposte.
  3. Database: Questo è dove memorizziamo e recuperiamo i dati. Non copriremo i database in questo tutorial, ma è bene sapere che esistono!

Ecco una semplice diagramma per illustrarlo:

[Client] <---> [Server] <---> [Database]

Le frecce rappresentano il flusso di dati tra questi componenti. Bello, vero?

Creare un Server Web utilizzando Node

Ora, mettiamo le mani sporche e creiamo un semplice server web utilizzando Node.js. Non preoccuparti se non hai mai programmato prima – andremo avanti passo per passo!

Prima di tutto, dobbiamo utilizzare il modulo http integrato di Node. Questo modulo ci permette di creare un server che può gestire richieste HTTP.

const http = require('http');

const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Ciao, Mondo!');
});

server.listen(3000, 'localhost', () => {
console.log('Server in esecuzione su http://localhost:3000/');
});

Facciamo una breakdown:

  1. require del modulo http, che ci dà gli strumenti per creare un server.
  2. Utilizziamo http.createServer() per creare un nuovo server. Questa funzione prende una funzione di callback che sarà eseguita ogni volta che il server riceve una richiesta.
  3. Nella funzione di callback, impostiamo il codice di stato a 200 (che significa "OK"), impostiamo il tipo di contenuto a testo semplice e inviamo "Ciao, Mondo!" come risposta.
  4. Infine, diciamo al server di ascoltare sulla porta 3000 su localhost.

Per far girare questo server, salva il codice in un file (chiamiamolo server.js), apri il terminale, naviga nella directory che contiene il file, e esegui:

node server.js

Ora, se apri il tuo browser e vai a http://localhost:3000, dovresti vedere "Ciao, Mondo!". Congratulazioni, hai appena creato il tuo primo server web!

Creare un Client Web utilizzando Node

Ora che abbiamo un server, creiamo un client che può inviare richieste ad esso. Nel mondo reale, questo sarebbe solitamente un browser web, ma possiamo creare un semplice client utilizzando Node.js anche noi.

Ecco un semplice client che invia una richiesta GET al nostro server:

const http = require('http');

const options = {
hostname: 'localhost',
port: 3000,
path: '/',
method: 'GET'
};

const req = http.request(options, (res) => {
console.log(`statusCode: ${res.statusCode}`);

res.on('data', (d) => {
process.stdout.write(d);
});
});

req.on('error', (error) => {
console.error(error);
});

req.end();

Facciamo una breakdown:

  1. Richiediamo nuovamente il modulo http.
  2. Configuriamo le opzioni per la nostra richiesta, inclusi l'hostname, la porta, il percorso e il metodo.
  3. Creiamo una richiesta utilizzando http.request(), passando le nostre opzioni e una funzione di callback.
  4. Nella funzione di callback, registriamo il codice di stato e impostiamo un listener per l'evento 'data', che stamperà qualsiasi dato ricevuto dal server.
  5. Aggiungiamo anche un gestore di errori.
  6. Infine, chiamiamo req.end() per inviare la richiesta.

Salva questo in un file chiamato client.js e esegui node client.js. Dovresti vedere il codice di stato (200) e il messaggio dal server ("Ciao, Mondo!") stampato nel tuo terminale.

Conclusione

Congratulazioni! Hai appena creato il tuo primo server e client web utilizzando Node.js. Questo è solo la punta dell'iceberg, ma è un ottimo inizio. Continuando il tuo viaggio nello sviluppo web, imparerai come gestire diversi tipi di richieste, servire pagine HTML, lavorare con database e molto altro.

Ricorda, ogni esperto era una volta un principiante. Continua a praticare, a imparare e, soprattutto, divertiti! Il mondo dello sviluppo web è vasto ed entusiasmante, e hai appena fatto i tuoi primi passi in esso. Buon coding!

Metodo Descrizione
http.createServer() Crea un nuovo server HTTP
server.listen() Avvia il server, facendolo ascoltare le richieste in arrivo
http.request() Invia una richiesta HTTP a un server
res.statusCode Imposta il codice di stato HTTP della risposta
res.setHeader() Imposta un'intestazione della risposta
res.end() Invia una risposta al client
req.on() Imposta un listener per un evento della richiesta

Credits: Image by storyset