Reqwest für Rust: Vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist Reqwest und wozu wird es benötigt?

\n\n

Reqwest 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.

\n\n

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.

\n\n

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
\n\n

Installation

\n\n

Um Reqwest zu verwenden, benötigen Sie ein Rust-Projekt mit Cargo.toml. Fügen Sie die Abhängigkeit im Abschnitt [dependencies] hinzu:

\n\n
[dependencies]\nreqwest = { version = "0.12", features = ["json", "multipart", "cookies", "socks"] }\ntokio = { version = "1", features = ["full"] }\nserde = { version = "1", features = ["derive"] }\nserde_json = "1"
\n\n

Erklä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 blocking hinzu.
  • \n
\n\n

Für die synchrone Verwendung (ohne Asynchronität) können Sie es wie folgt einbinden:

\n\n
reqwest = { version = "0.12", features = ["blocking", "json"] }
\n\n

Schnellstart mit einem Codebeispiel

\n\n

Lassen Sie uns eine einfache GET-Anfrage an eine öffentliche API stellen und das Ergebnis ausgeben. Erstellen Sie eine Datei main.rs:

\n\n
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\n

Starten Sie es mit dem Befehl cargo run. Sie sollten Informationen über das Rust-Repository sehen.

\n\n

Wichtige Methoden und Funktionen

\n\n

1. reqwest::get()

\n

Was 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.

\n

Parameter:

\n
    \n
  • url: impl IntoUrl – ein String oder eine URL, an die die Anfrage gesendet wird.
  • \n
\n

Beispiel:

\n
let resp = reqwest::get("https://httpbin.org/get"                    

Empfehlungen