Esplora alcune delle librerie e dei client HTTP più in voga per Node.js, strumenti essenziali per consentire alle tue applicazioni web, siti web e app di comunicare dati con altri server.
Se il tuo obiettivo è sviluppare un’applicazione web che interagisca con server di terze parti o interni per acquisire dati e svolgere azioni come invio di messaggi o gestione degli ordini, la tua app dovrà necessariamente comunicare attraverso le API web. Questo avviene mediante l’invio di richieste HTTP.
Invece di creare un modulo di richiesta HTTP da zero, i programmatori preferiscono utilizzare una vasta gamma di librerie HTTP per Node.js. La maggior parte di questi strumenti è disponibile con licenza open source, eliminando così i costi aggiuntivi.
L’utilizzo di client e librerie HTTP in Node.js è una pratica moderna nello sviluppo di app, appresa dalla maggior parte degli sviluppatori all’inizio della loro carriera. Quindi, se sei un programmatore alle prime armi o desideri semplicemente scoprire le librerie HTTP più popolari per Node.js, sei nel posto giusto. Continua a leggere per scoprire alcuni interessanti strumenti per la gestione delle richieste HTTP.
Cosa sono le Richieste HTTP?
Un client, integrato in un’app web o mobile, invia richieste HTTP a un host specifico. L’host risiede di solito su un server interno o di terze parti. Il client si avvale di diversi elementi dell’URL, quali host, schema, stringa di query e percorso, per inviare la chiamata HTTP all’host sul server.
Un’applicazione web o mobile potrebbe effettuare una o più richieste HTTP. Indipendentemente dalla loro funzione, è necessario che le richieste HTTP siano composte dagli elementi seguenti:
- La riga di richiesta HTTP.
- I campi di intestazione HTTP.
- Eventualmente, un corpo del messaggio.
Riga di Richiesta
In un messaggio di richiesta HTTP, la riga di richiesta è il primo elemento. Essa comprende tre componenti: il metodo di richiesta, il percorso della richiesta e la versione HTTP.
Un metodo di richiesta è generalmente un comando di una sola parola diretto al server. Metodi comuni includono GET, HEAD, POST, PUT e CONNECT. Tra il metodo e la versione HTTP si trova il percorso o la posizione della risorsa sul server di destinazione.
GET /applications/htp/cics/index.html HTTP/1.1
Per fornire al destinatario informazioni essenziali sulla richiesta, è necessario includere un messaggio di intestazione. Questo comunica al server ricevente la natura del messaggio, informazioni sul mittente e il metodo di comunicazione.
Ad esempio, se la tua app deve recuperare documenti aggiornati l’11 gennaio 2022 alle 10:00:00 GMT in inglese e francese, dovresti usare la seguente intestazione:
Accept-Language: en, fr
If-Modified-Since: Tue, 11 Jan 2022 10:00:00 GMT
Corpo del Messaggio
Il contenuto testuale di un messaggio HTTP è il corpo dell’entità o il corpo del messaggio. Questo elemento non è obbligatorio per ogni tipo di richiesta. Ad esempio, non è necessario un corpo del messaggio se si utilizza il metodo GET.
Invece, se usi il metodo POST per inviare dati a un server tramite una richiesta HTTP, dovrai includere un messaggio che specifichi le istruzioni per la pubblicazione dei dati.
Cosa sono le Richieste HTTP in Node?
Nelle applicazioni web e in tempo reale, dove il programma deve comunicare con server esterni o interni per recuperare dati in un’app client, è essenziale effettuare richieste HTTP in Node.js. In questo scenario, l’app client e il server agiscono come due computer distinti.
La richiesta HTTP dall’ambiente runtime lato server Node.js rappresenta la prima comunicazione di dati tra questi due sistemi. Il server di destinazione elabora la richiesta HTTP e restituisce un altro pacchetto di dati, noto come risposta.
Gli sviluppatori sfruttano ampiamente Node.js per attività come chat, acquisizione di dati dai moduli, giochi per browser, API su database di oggetti, streaming di dati e code di input. In tutte queste circostanze, le richieste HTTP in Node giocano un ruolo fondamentale.
Necessità di Client HTTP e Librerie di Richieste in Node.js
Una libreria di richieste HTTP per Node.js offre un’interfaccia semplificata e intuitiva per la creazione di chiamate HTTP. Queste librerie o moduli semplificano notevolmente le operazioni basate su richieste HTTP. L’utilizzo di tali strumenti consente di ridurre il codice e rendere le app più leggere.
Inoltre, si risparmia tempo evitando di costruire da zero un modulo di richiesta HTTP completo per Node.js. Inoltre, si evitano i costi associati all’assunzione di un sviluppatore di terze parti per questo compito.
Puoi scegliere la libreria di richieste HTTP per Node.js più adatta al tuo progetto e delegare la gestione di tutte le chiamate HTTP che la tua app effettuerà.
Tutte queste librerie open source o a pagamento offrono un framework predefinito per la creazione di richieste HTTP. Il framework è basato sulle classi HTTP integrate di Java. Inoltre, queste librerie utilizzano Simple Logging Facade for Java (SLF4J) come unica dipendenza esterna, rendendo la base di codice della libreria particolarmente leggera.
Come Funziona una Richiesta HTTP in Node.js?
Le richieste HTTP possono essere paragonate all’interazione del browser web con un server remoto, come nel caso di un’applicazione GRE.
Quando si clicca su un link di registrazione, il browser richiede dati dal server. Successivamente, quando si compila il modulo dell’esame GRE, il browser invia i dati al server chiedendogli di memorizzarli.
Per far funzionare le richieste HTTP, i programmatori utilizzano vari metodi di richiesta, come:
GET
Il metodo GET è ampiamente utilizzato per chiamate API e altre richieste HTTPS che non richiedono modifiche ai dati. Principalmente, stabilisce una connessione con il server e permette all’app client di richiedere dati.
DELETE
Quando si desidera eliminare risorse da un server remoto, l’ambiente di runtime Node.js utilizza una chiamata HTTP basata sul metodo DELETE.
POST
Le richieste HTTP basate sul metodo POST vengono utilizzate quando un’app web o mobile deve salvare i dati dell’app client su un server remoto.
PUT
Immagina di accedere a un’app di social media e modificare le informazioni del tuo account. Ciò implica l’aggiornamento di dati sul server. In queste circostanze, il runtime utilizza richieste HTTP con il metodo PUT.
OPTIONS
Un server remoto potrebbe non supportare tutti i metodi di comunicazione dati supportati dalla tua app. Pertanto, l’app deve effettuare una richiesta HTTP basata sul metodo OPTIONS per comprendere le opzioni di comunicazione del server.
HEAD
Una libreria di chiamate HTTP utilizzerà un metodo di richiesta HEAD se i dati trasmessi sono grandi e si desidera evitare il corpo del messaggio nei dati di risposta.
TRACE
Il metodo TRACE per le richieste HTTP consente all’app client di registrare il percorso di comunicazione con il server.
Finora, abbiamo discusso le basi, le necessità e il funzionamento delle librerie di richieste HTTP per Node.js. Il passo successivo è esplorare i vari client e librerie disponibili in Node.js, che semplificano lo sviluppo di software, app e siti web.
Ecco gli strumenti da considerare se le richieste HTTP sono di tuo interesse:
Axios
Axios è una popolare libreria JavaScript per Node.js, leggera e dedicata alle richieste HTTP. Questo client HTTP supporta sia i browser web moderni che le applicazioni Node.js. Oltre a Google Chrome e Mozilla, è anche molto compatibile con Internet Explorer 8 e versioni successive.
Dovresti considerare l’uso di Axios anziché le librerie HTTP o HTTPS native di Node.js per le chiamate API, grazie alle seguenti caratteristiche:
- Axios è ideale per interrompere le attività di richiesta.
- È compatibile con i browser web più datati e moderni.
- Offre protezione CSRF integrata.
- Permette di impostare un timeout di risposta.
- Esegue trasformazioni automatiche dei dati JSON.
- Permette di visualizzare l’avanzamento del caricamento.
- Axios è compatibile con l’API Promise.
Puoi ottenere la libreria gratuitamente su GitHub, con licenza MIT, che limita l’uso del codice.
GOT
GOT è una libreria di richieste HTTP potente e facile da usare per Node.js. Al momento della stesura di questo testo, più di 8.000 pacchetti e oltre 4 milioni di progetti utilizzano GOT per le chiamate HTTP in Node.js.
Inoltre, il progetto è supportato da oltre dieci sviluppatori esperti, garantendo la stabilità della libreria, e di conseguenza delle tue applicazioni.
Nonostante la licenza MIT open source, diverse aziende e marchi famosi si affidano a questa libreria per effettuare richieste HTTP. Ad esempio, Segment, Antora, GetVoIP, Exoframe, Natural Cycles e Microlink sono tra coloro che la utilizzano.
Superagent
SuperAgent è un’altra libreria di richieste HTTP molto apprezzata dagli sviluppatori per la sua API ajax progressiva. È anche leggera, evitando di appesantire la base di codice finale dell’app web. È stata sviluppata per offrire leggibilità e flessibilità durante l’invio di richieste HTTP.
Le caratteristiche principali della libreria sono:
- Opzione di timeout per interrompere le richieste se il server di destinazione non risponde.
- Possibilità di abilitare l’autenticazione per maggiore sicurezza, usando il metodo .auth().
- Questo client di richiesta HTTP per Node.js offre la possibilità di “pipare” i dati da e verso la richiesta.
Se hai provato diversi client di richiesta HTTP per Node.js e li hai trovati troppo complessi, Superagent potrebbe fare al caso tuo, grazie alla sua curva di apprendimento più semplice.
Node-Fetch
Un’altra libreria di richieste HTTP molto scaricata per Node.js su npm è Node Fetch. Al momento della stesura, la libreria ha già superato i 36 milioni di download a settimana.
Le caratteristiche degne di nota di questo client di richiesta HTTP per Node.js sono:
- Funzionamento uniforme quando si lavora con l’API window.fetch.
- La libreria fa scelte ponderate, seguendo le specifiche di flusso e le implementazioni standard di WhatWG.
- Utilizza una libreria di promesse nativa, ma è possibile sostituirla con una preferita.
- Offre flussi di nodi nativi per il corpo sia in risposta che in richiesta.
- Può decodificare codifiche come deflate o gzip.
Come i suoi concorrenti, è distribuita con licenza MIT per uso gratuito in applicazioni commerciali e web.
KY Richieste HTTP Semplici
KY si basa sull’API fetch del browser per operare come client di richiesta HTTP. È elegante, di piccole dimensioni e sviluppato interamente in JavaScript. È adatto all’uso in ambiente runtime Deno e in diversi browser moderni. Un grande vantaggio è la sua leggerezza, dovuta all’assenza di dipendenze.
Se hai utilizzato fetch in passato e cerchi qualcosa di più moderno, KY è un’ottima opzione. Offre diversi vantaggi come un’API più semplice, la gestione dei tentativi non riusciti, supporto per i timeout, opzione JSON e prefisso URL, tra le altre cose.
Needle
Needle è un client di richieste HTTP agile e basato sullo streaming per Node.js. La sua base di codice include solo due dipendenze, il che la rende una libreria leggera. Alcune caratteristiche principali sono:
- Gestisce richieste HTTPS/HTTP con i metodi comuni.
- Supporta tutte le opzioni TLS native di Node, come RejectUnauthorized, Ciphers e secureProtocol.
Questa libreria è open source e viene distribuita con licenza MIT.
Undici
Undici è un client HTTP/1.1 per le chiamate HTTP in applicazioni web basate sull’ambiente runtime Node.js. Il modulo è distribuito con licenza MIT per strumenti open source.
Al momento in cui scriviamo, npm ha registrato oltre 2 milioni di download settimanali. È molto popolare tra gli sviluppatori per via del fatto che è un client di richiesta HTTP completo e non utilizza dipendenze di terze parti.
Conclusioni
In questo articolo, hai avuto modo di conoscere alcuni potenti e popolari client HTTP e librerie di richieste per Node.js. Tutte le librerie e i client di richieste HTTP per Node.js sopra menzionati possiedono sia funzionalità standard che uniche. Sono proprio queste ultime a guidare la scelta dello strumento più adatto alle tue necessità.
È fondamentale fare un’accurata ricerca prima di scegliere una libreria o un client di richieste HTTP per non incorrere in errori, problemi o inconvenienti durante lo sviluppo.
Ad esempio, lo stack tecnologico del tuo progetto dovrebbe indirizzarti verso la scelta di una determinata API. Un’altra considerazione importante è il numero di chiamate HTTP che la tua app o sito web effettueranno, così come la loro frequenza.
Non da ultimo, è necessario valutare se si desidera un progetto leggero o pesante, in modo da selezionare l’API di richieste HTTP appropriata all’inizio del processo di sviluppo.
Potresti anche essere interessato ad approfondire i migliori bundler Node.js, gli strumenti di compilazione e gli strumenti di monitoraggio di Node.js.