Qu'est-ce que Reqwest et pourquoi en a-t-on besoin ?
\n\nReqwest est l'une des bibliothèques les plus populaires et pratiques pour effectuer des requêtes HTTP en Rust. Elle fournit une API ergonomique de haut niveau, construite sur la base du moteur HTTP asynchrone hyper et de tokio. Si vous développez en Rust un scraper web, un client pour une API REST, un bot Telegram ou si vous souhaitez simplement télécharger un fichier, Reqwest deviendra votre outil principal.
La bibliothèque prend en charge à la fois les requêtes asynchrones (par défaut) et synchrones (bloquantes), le travail avec JSON, multipart/form-data, les cookies, les proxys, TLS/SSL, les redirections et bien plus encore. Reqwest est conçu pour être intuitif pour les développeurs familiers avec la bibliothèque Python requests ou la bibliothèque JavaScript fetch.
Fonctionnalités clés :
\n- \n
- Requêtes HTTP/HTTPS asynchrones et synchrones (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS) \n
- Sérialisation et désérialisation automatiques du JSON (via
serde) \n - Prise en charge de multipart/form-data pour le téléchargement de fichiers \n
- Gestion des cookies (Cookie Store) \n
- Prise en charge des proxys (HTTP, HTTPS, SOCKS5) \n
- Personnalisation des timeouts, en-têtes, User-Agent \n
- Travail avec les flux (streaming) pour les réponses volumineuses \n
- Sécurité par défaut (vérification des certificats SSL) \n
Installation
\n\nPour utiliser Reqwest, vous aurez besoin d'un projet Rust avec un fichier Cargo.toml. Ajoutez la dépendance dans la section [dependencies] :
[dependencies]\nreqwest = { version = "0.12", features = ["json", "multipart", "cookies", "socks"] }\ntokio = { version = "1", features = ["full"] }\nserde = { version = "1", features = ["derive"] }\nserde_json = "1"\n\nExplication des features :
\n- \n
json— active la prise en charge de la sérialisation/désérialisation JSON via serde. \n multipart— pour l'envoi de multipart/form-data. \n cookies— pour la gestion automatique des cookies. \n socks— pour la prise en charge des proxys SOCKS5. \n - Si vous avez besoin uniquement d'un client synchrone (bloquant), ajoutez la feature
blocking. \n
Pour une utilisation synchrone (sans asynchrone), vous pouvez configurer ainsi :
\n\nreqwest = { version = "0.12", features = ["blocking", "json"] }\n\nDémarrage rapide avec un exemple de code
\n\nFaisons une simple requête GET vers une API publique et affichons le résultat. Créez un fichier main.rs :
use reqwest;\nuse std::error::Error;\n\n#[tokio::main]\nasync fn main() -> Result<(), Box<dyn Error>> {\n // Exécute une requête GET\n let response = reqwest::get("https://api.github.com/repos/rust-lang/rust")\n .await?;\n\n // Vérifie le statut\n if response.status().is_success() {\n // Parse le corps de la réponse en JSON (sans typage strict)\n let body: serde_json::Value = response.json().await?;\n println!("Nom du dépôt : {}", body["full_name"]);\n println!("Description : {}", body["description"].as_str().unwrap_or("Pas de description"));\n println!("Étoiles : {}", body["stargazers_count"]);\n } else {\n eprintln!("Erreur : {}", response.status());\n }\n\n Ok(())\n}\n\nExécutez avec la commande cargo run. Vous devriez voir les informations sur le dépôt Rust.
Méthodes et fonctions principales
\n\n1. reqwest::get()
\nCe qu'elle fait : Exécute une requête HTTP GET vers l'URL spécifiée. C'est le moyen le plus simple d'obtenir des données. Retourne une Response.
Paramètres :
\n- \n
url: impl IntoUrl— une chaîne ou une URL vers laquelle la requête est envoyée. \n
Exemple :
\nlet resp = reqwest::get("https://httpbin.org/get" Aussi dans la bibliothèque
Génération de rapports PDF en Go : aperçu des bibliothèques et exemples de code
NestJS pour JavaScript (Node.js) : guide complet avec exemples
Utilisation de GraphQL en Swift : bibliothèques Apollo et Relay pour iOS/macOS
Génération de PDF en TypeScript : bibliothèques et outils pour Node.js