In Node.js è possibile effettuare richieste HTTP senza dipendere da librerie esterne come Axios o node-fetch, semplicemente utilizzando i moduli core http
e https
. Questo approccio è utile per mantenere basse le dipendenze e avere un controllo più diretto sulla gestione delle richieste.
Utilizzare il modulo http
Per effettuare una richiesta HTTP, possiamo usare il modulo http
integrato in Node.js. Ecco un esempio di richiesta GET:
const http = require('http');
const options = {
hostname: 'example.com',
port: 80,
path: '/',
method: 'GET'
};
const req = http.request(options, res => {
console.log(`Status Code: ${res.statusCode}`);
res.on('data', chunk => {
console.log(`Body: ${chunk}`);
});
res.on('end', () => {
console.log('No more data in response.');
});
});
req.on('error', error => {
console.error(`Error: ${error.message}`);
});
req.end();
Utilizzare il modulo https
Se devi effettuare una richiesta a un server che usa HTTPS, devi usare il modulo https
. Il codice è molto simile:
const https = require('https');
const options = {
hostname: 'example.com',
port: 443,
path: '/',
method: 'GET'
};
const req = https.request(options, res => {
console.log(`Status Code: ${res.statusCode}`);
res.on('data', chunk => {
console.log(`Body: ${chunk}`);
});
res.on('end', () => {
console.log('No more data in response.');
});
});
req.on('error', error => {
console.error(`Error: ${error.message}`);
});
req.end();
Note importanti
- Ricorda di chiamare
req.end()
per inviare effettivamente la richiesta, anche se non stai inviando dati nel corpo. - Puoi anche aggiungere headers personalizzati all'interno dell'oggetto
options
. - Per richieste POST o PUT, puoi scrivere i dati usando
req.write(data)
prima di chiamarereq.end()
.
Conclusione
I moduli http
e https
di Node.js offrono un'API abbastanza semplice e diretta per effettuare richieste web. Anche se all'inizio può sembrare più verboso rispetto a librerie più moderne, conoscere queste basi è fondamentale per comprendere meglio come funziona la comunicazione di rete in ambiente Node.js.