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.
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:
- Tu (il client) entri in una biblioteca (l'internet).
- Chiedi al bibliotecario (il server web) un libro specifico (una pagina web).
- Il bibliotecario recupera il libro e te lo consegna.
- 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:
- Client: Solitamente un browser web (come Chrome o Firefox) che invia richieste al server.
- Server: Questo è dove gira la nostra applicazione Node.js. Riceve richieste dai client e invia risposte.
- 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:
-
require
del modulohttp
, che ci dà gli strumenti per creare un server. - 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. - 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.
- 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:
- Richiediamo nuovamente il modulo
http
. - Configuriamo le opzioni per la nostra richiesta, inclusi l'hostname, la porta, il percorso e il metodo.
- Creiamo una richiesta utilizzando
http.request()
, passando le nostre opzioni e una funzione di callback. - Nella funzione di callback, registriamo il codice di stato e impostiamo un listener per l'evento 'data', che stamperà qualsiasi dato ricevuto dal server.
- Aggiungiamo anche un gestore di errori.
- 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