Crea un server web HTTP in Node.js con Code Esempio
โก Riepilogo intelligente
Con Node.js รจ possibile creare un server web funzionante in poche righe di codice utilizzando il modulo http integrato. Il server si mette in ascolto su una porta prescelta e risponde a ogni richiesta con un codice di stato e un corpo della risposta, mentre un codice separato si occupa di recuperare i dati da altri siti.

Migliori Node.js Il framework viene utilizzato principalmente per creare applicazioni basate su server. Puรฒ essere facilmente impiegato per realizzare server web che forniscono contenuti agli utenti.
Diversi moduli gestiscono le richieste relative al server, il modulo integrato http Tra questi, il modulo principale. Vedremo come creare un'applicazione server web di base utilizzando Node.js e poi come richiedere dati da un altro sito.
Nodo come server Web utilizzando HTTP
Vediamo un esempio di come creare ed eseguire la prima applicazione Node.js.
L'applicazione crea un semplice modulo server che รจ in ascolto sulla porta 7000. Quando viene effettuata una richiesta tramite il browser su quella porta, il server invia un Ciao a tutti risposta al cliente.
Code Spiegazione
- Migliori
requirela funzione legge un JavaCopione file, lo esegue e restituisce il suo oggetto exports. Qui carica ilhttpmodulo in modo che la sua funzionalitร sia disponibile nell'applicazione. - Un'applicazione server viene creata a partire da una semplice funzione. Tale funzione viene eseguita ogni volta che una richiesta raggiunge il server.
- Quando viene ricevuta una richiesta, la risposta viene inviata con lo stato di 200Questo รจ il codice di stato standard in un'intestazione HTTP per una risposta positiva.
- Il corpo della risposta stesso รจ la stringa Ciao a tutti.
server.listenConsente all'applicazione di rimanere in ascolto delle richieste dei client sulla porta 7000. ร possibile utilizzare qualsiasi porta disponibile.
Se il comando viene eseguito correttamente, nel browser viene visualizzato il seguente output.
Uscita
Dall'output:
- Navigazione verso localhost URL sulla porta 7000 visualizza la stringa Ciao a tutti nella pagina.
- Poichรฉ il codice specifica la porta 7000, l'output รจ visibile solo quando si accede a quella porta.
Ecco il codice di riferimento:
var http = require('http'); var server = http.createServer(function(request, response) { response.writeHead(200, { "Content-Type": "text/plain" }); response.end("Hello World\n"); }); server.listen(7000);
Gestione delle richieste GET in Node.js
Effettuare una richiesta GET per recuperare dati da un altro sito รจ semplice in Node.js. Storicamente ciรฒ richiedeva request modulo, installato dalla riga di comando:
npm install request
Quel comando chiede al gestore di pacchetti Node di scaricare il modulo richiesto e di installarlo. Quando l'installazione ha successo, la riga di comando mostra il nome e la versione del modulo installato nel formato <name>@<version>.
Nell'istantanea qui sopra, il request Il modulo e il relativo numero di versione sono stati scaricati e installati.
Code Spiegazione
- Migliori
requestIl modulo installato nel passaggio precedente fornisce le funzioni necessarie per effettuare richieste GET ai siti web. - Viene effettuata una richiesta GET a un sito e, una volta ricevuta la risposta, viene eseguita una funzione di callback. La funzione di callback riceve tre parametri:
- Errore โ registra qualsiasi errore riscontrato durante l'esecuzione della richiesta.
- Risposta โ contiene le intestazioni HTTP restituite con la risposta.
- Corpo โ contiene l'intero contenuto della risposta.
- Il contenuto ricevuto nel
bodyIl parametro viene scritto sulla console.
Ecco il codice di riferimento:
var request = require("request"); request("https://example.com", function(error, response, body) { // Always check the error parameter before using the body if (error) { console.error("Request failed:", error.message); return; } console.log(body); });
โ ๏ธ Avviso di deprecazione: , il request modulo era Completamente deprecato nel febbraio 2020 e non riceve ulteriori aggiornamenti. Si installa e funziona ancora, quindi l'esempio di cui sopra rimane valido per i progetti esistenti, ma npm install request ora stampa un avviso di deprecazione. Il nuovo codice dovrebbe utilizzare quello integrato fetch funzione mostrata nella sezione successiva.
Come effettuare richieste HTTP con fetch nativo in Node.js
Node ha incluso un globale fetch funzione dalla versione 18, corrispondente all'API giร fornita dai browser. Non รจ richiesta alcuna installazione di pacchetti e la funzione restituisce una promise, quindi funziona direttamente con async/await.
// No require and no npm install needed on Node 18 or later async function getData() { try { const response = await fetch("https://example.com"); // fetch does NOT reject on 404 or 500 โ check ok yourself if (!response.ok) { throw new Error("HTTP status " + response.status); } const body = await response.text(); console.log(body); } catch (err) { // Network failures and the throw above both land here console.error("Request failed:", err.message); } } getData();
Tre differenze rispetto allo stile di callback meritano di essere notate. In primo luogo, fetch rifiuta solo in caso di errore a livello di rete; un HTTP 404 o 500 si risolve comunque correttamente, motivo per cui response.ok il controllo esiste e perchรฉ ometterlo รจ l'errore piรน comune quando si passa da request. In secondo luogo, il corpo non viene consegnato con la risposta โ deve essere letto esplicitamente con response.text() per testo semplice o response.json() per JSON, e ognuno di questi restituisce una promessa propria. Terzo, poichรฉ l'intera chiamata รจ basata su promise, una singola try/catch copre sia la richiesta che la lettura del corpo, sostituendo completamente il parametro di callback error-first.
Per gli script che devono essere eseguiti su Node 16 o versioni precedenti, installare node-fetch or axios invece, poichรฉ entrambi espongono un'interfaccia basata su promise comparabile e richiedono solo una modifica alla riga di importazione una volta aggiornato il runtime.
request vs fetch vs axios: quale usare?
Nella maggior parte della documentazione su Node.js compaiono tre client HTTP, ma solo uno di essi rappresenta una scelta predefinita sensata per i nuovi progetti. Differiscono per lo stato di manutenzione, per la necessitร o meno di una dipendenza e per il modo in cui ciascuno segnala uno stato di errore; la tabella seguente li mette quindi a confronto.
| Aspetto | richiesta | recuperare (integrato) | Axios |
|---|---|---|---|
| Stato | Obsoleto dal 2020 | Mantenuto nel nucleo | Mantenuto attivamente |
| Installazione | pacchetto npm | Nessuno sul nodo 18+ | pacchetto npm |
| Style | Callback con prioritร agli errori | Promessa | Promessa |
| Analisi JSON | Manuale o opzione JSON | Manuale tramite response.json() | Automatico |
| Rifiutato con errore 404 o 500 | Non | Non | Si |
Usa il fetch per i nuovi progetti su una versione corrente di Node, poichรฉ non aggiunge dipendenze e corrisponde all'API del browser che gli sviluppatori giร conoscono. Scegli axios quando la gestione automatica di JSON, gli intercettori di richieste o il rifiuto in caso di errori consentirebbero di risparmiare codice reale. Mantieni request solo all'interno di applicazioni legacy che giร ne dipendono e che prevedono di sostituirlo.
Errori comuni del server Node.js e come risolverli
La maggior parte degli errori che si verificano all'avvio di un primo server Node derivano da porte, percorsi o risposte mancanti, piuttosto che dal codice del server stesso.
- ADRENALINA: Un altro processo occupa giร la porta. Esegui
netstat -ano | findstr :7000on Windows, olsof -i :7000on macOS e Linux, quindi interrompi quel processo o scegli una porta diversa. - EACCES su porta bassa: Le porte inferiori a 1024 richiedono privilegi elevati. Durante lo sviluppo, utilizzare una porta superiore a 1024, come la 3000 o la 7000.
- Il browser si blocca e non carica mai: il gestore non ha mai chiamato
response.end()La connessione rimane aperta fino allo scadere del tempo limite, quindi ogni percorso attraverso il gestore deve terminare la risposta. - Impossibile trovare il modulo 'http': Il nome del file รจ stato digitato in modo errato oppure lo script รจ in esecuzione in un browser anzichรฉ in Node. I moduli principali non richiedono installazione.
- Non vengono visualizzate modifiche: Node carica il file una volta all'avvio. Riavvia il processo dopo ogni modifica oppure eseguilo sotto un watcher come
node --watch server.js.




