Was ist Reqwest und wozu wird es benötigt?
\n\nReqwest ist eine der beliebtesten und benutzerfreundlichsten Bibliotheken für HTTP-Anfragen in der Sprache Rust. Sie bietet eine ergonomische, hochwertige API, die auf der asynchronen HTTP-Engine hyper und tokio aufbaut. Wenn Sie in Rust einen Web-Scraper, einen Client für eine REST-API, einen Bot für Telegram schreiben oder einfach eine Datei herunterladen möchten – Reqwest wird Ihr wichtigstes Werkzeug sein.
Die Bibliothek unterstützt sowohl asynchrone (standardmäßig) als auch synchrone (blockierende) Anfragen, die Arbeit mit JSON, multipart/form-data, Cookies, Proxys, TLS/SSL, Weiterleitungen und vieles mehr. Reqwest ist so konzipiert, dass es für Entwickler, die mit der Python-Bibliothek requests oder der JavaScript-Bibliothek fetch vertraut sind, intuitiv verständlich ist.
Wichtige Funktionen:
\n- \n
- Asynchrone und synchrone HTTP/HTTPS-Anfragen (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS) \n
- Automatische Serialisierung und Deserialisierung von JSON (über
serde) \n - Unterstützung von multipart/form-data zum Hochladen von Dateien \n
- Cookie-Verwaltung (Cookie Store) \n
- Unterstützung von Proxys (HTTP, HTTPS, SOCKS5) \n
- Anpassung von Timeouts, Headern, User-Agent \n
- Arbeit mit Streams für große Antworten \n
- Sicherheit standardmäßig (Überprüfung von SSL-Zertifikaten) \n
Installation
\n\nUm Reqwest zu verwenden, benötigen Sie ein Rust-Projekt mit Cargo.toml. Fügen Sie die Abhängigkeit im Abschnitt [dependencies] hinzu:
[dependencies]\nreqwest = { version = "0.12", features = ["json", "multipart", "cookies", "socks"] }\ntokio = { version = "1", features = ["full"] }\nserde = { version = "1", features = ["derive"] }\nserde_json = "1"\n\nErklärung zu den Features:
\n- \n
json– aktiviert die Unterstützung für JSON-Serialisierung/Deserialisierung über serde. \n multipart– zum Senden von multipart/form-data. \n cookies– für die automatische Cookie-Verwaltung. \n socks– für die Unterstützung von SOCKS5-Proxys. \n - Wenn Sie nur einen synchronen (blockierenden) Client benötigen, fügen Sie das Feature
blockinghinzu. \n
Für die synchrone Verwendung (ohne Asynchronität) können Sie es wie folgt einbinden:
\n\nreqwest = { version = "0.12", features = ["blocking", "json"] }\n\nSchnellstart mit einem Codebeispiel
\n\nLassen Sie uns eine einfache GET-Anfrage an eine öffentliche API stellen und das Ergebnis ausgeben. Erstellen Sie eine Datei main.rs:
use reqwest;\nuse std::error::Error;\n\n#[tokio::main]\nasync fn main() -> Result<(), Box<dyn Error>> {\n // Führe eine GET-Anfrage aus\n let response = reqwest::get("https://api.github.com/repos/rust-lang/rust")\n .await?;\n\n // Überprüfe den Status\n if response.status().is_success() {\n // Parse den Antwortkörper als JSON (ohne strenge Typisierung)\n let body: serde_json::Value = response.json().await?;\n println!("Repository-Name: {}", body["full_name"]);\n println!("Beschreibung: {}", body["description"].as_str().unwrap_or("Keine Beschreibung"));\n println!("Sterne: {}", body["stargazers_count"]);\n } else {\n eprintln!("Fehler: {}", response.status());\n }\n\n Ok(())\n}\n\nStarten Sie es mit dem Befehl cargo run. Sie sollten Informationen über das Rust-Repository sehen.
Wichtige Methoden und Funktionen
\n\n1. reqwest::get()
\nWas es tut: Führt eine HTTP-GET-Anfrage an die angegebene URL aus. Dies ist der einfachste Weg, Daten abzurufen. Gibt eine Response zurück.
Parameter:
\n- \n
url: impl IntoUrl– ein String oder eine URL, an die die Anfrage gesendet wird. \n
Beispiel:
\nlet resp = reqwest::get("https://httpbin.org/get" Auch in der Bibliothek
SQLite für C++: Komplettguide mit Praxisbeispielen
Überwachung von Node.js-Anwendungen: Tools und Bibliotheken
Aufgabenwarteschlangen für Rust: Überblick und Anwendungsbeispiele
Markdown-Verarbeitung in C# (.NET): Bibliotheken und Werkzeuge
Redis-Client für PHP: Predis — Installation, Verbindung, Beispiele