Reqwest: Libreria Client HTTP per Rust
Reqwest è una libreria client HTTP di alto livello che semplifica la gestione delle richieste HTTP e fornisce numerose funzionalità comunemente utilizzate:
- Supporto per API sia asincrone che bloccanti
- Gestione di diversi tipi di corpi di richiesta: testo semplice, JSON, form codificati URL, form multipart
- Politiche di reindirizzamento personalizzabili
- Supporto per proxy HTTP
- Crittografia TLS abilitata per impostazione predefinita
- Gestione dei cookie
Utilizzo Base
Effettuare una Richiesta GET
Per richieste singole, puoi utilizzare il metodo pratico get:
Nota: Se prevedi di effettuare più richieste, è meglio creare un
Cliente riutilizzarlo per sfruttare il pool di connessioni.
Effettuare una Richiesta POST
Puoi impostare il corpo della richiesta utilizzando il metodo body():
Dati di Form
L'invio di dati di form è un'esigenza comune. Puoi utilizzare qualsiasi tipo che possa essere serializzato in dati di form:
Dati JSON
Puoi facilmente inviare dati JSON utilizzando il metodo json (richiede la funzionalità json):
Gestione della Risposta
Le risposte possono essere gestite in vari modi:
Funzionalità Avanzate
Politica di Reindirizzamento
Per impostazione predefinita, il client gestirà automaticamente i reindirizzamenti HTTP, seguendo fino a 10 salti. Puoi personalizzare questo comportamento utilizzando ClientBuilder:
Supporto per Cookie
Puoi abilitare la memorizzazione e l'invio automatico dei cookie di sessione tramite ClientBuilder:
Impostazioni Proxy
I proxy di sistema sono abilitati per impostazione predefinita, che cercheranno le impostazioni del proxy HTTP o HTTPS nelle variabili d'ambiente:
HTTP_PROXYohttp_proxy: proxy per connessioni HTTPHTTPS_PROXYohttps_proxy: proxy per connessioni HTTPSALL_PROXYoall_proxy: proxy per entrambi i tipi di connessioni
Puoi anche impostare esplicitamente un proxy tramite codice:
Configurazione TLS
Il client utilizza TLS per impostazione predefinita per connettersi a destinazioni HTTPS:
Impostazioni di Timeout
Puoi configurare le durate di timeout per le richieste:
Funzionalità Opzionali
Reqwest fornisce varie funzionalità opzionali che possono essere abilitate o disabilitate tramite le funzionalità di Cargo:
http2(abilitato per impostazione predefinita): supporto per HTTP/2default-tls(abilitato per impostazione predefinita): fornisce supporto TLS per HTTPSrustls-tls: fornisce funzionalità TLS utilizzando rustlsblocking: fornisce un'API client bloccantejson: fornisce funzionalità di serializzazione e deserializzazione JSONmultipart: fornisce funzionalità per form multipartcookies: fornisce supporto per sessioni con cookiegzip,brotli,deflate,zstd: supporto per varie decompressioni del corpo della rispostasocks: fornisce supporto per proxy SOCKS5
API Bloccante
Quando non sono necessarie operazioni asincrone, puoi utilizzare l'API bloccante (richiede la funzionalità blocking):