Reqwest Rust: पूर्ण गाइड उदाहरणों के साथ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Reqwest क्या है और इसकी आवश्यकता क्यों है?

Reqwest, Rust भाषा में HTTP रिक्वेस्ट करने के लिए सबसे लोकप्रिय और उपयोगी लाइब्रेरी है। यह hyper और tokio पर आधारित एक उच्च-स्तरीय, उपयोगकर्ता-अनुकूल API प्रदान करता है। यदि आप Rust में वेब स्क्रैपर, REST API क्लाइंट, Telegram बॉट बना रहे हैं या बस कोई फ़ाइल डाउनलोड करना चाहते हैं, तो Reqwest आपका मुख्य उपकरण होगा।

यह लाइब्रेरी एसिंक्रोनस (डिफ़ॉल्ट) और सिंक्रोनस (ब्लॉकिंग) दोनों प्रकार के रिक्वेस्ट, JSON, multipart/form-data, कुकीज़, प्रॉक्सी, TLS/SSL, रीडायरेक्ट और बहुत कुछ सपोर्ट करती है। Reqwest को इस तरह डिज़ाइन किया गया है कि यह Python की requests या JavaScript की fetch लाइब्रेरी से परिचित डेवलपर्स के लिए सहज हो।

मुख्य विशेषताएं:

  • एसिंक्रोनस और सिंक्रोनस HTTP/HTTPS रिक्वेस्ट (GET, POST, PUT, DELETE, PATCH, HEAD, OPTIONS)
  • JSON का ऑटोमैटिक सीरियलाइज़ेशन और डीसीरियलाइज़ेशन (serde के माध्यम से)
  • फ़ाइल अपलोड के लिए multipart/form-data सपोर्ट
  • कुकी मैनेजमेंट (Cookie Store)
  • प्रॉक्सी सपोर्ट (HTTP, HTTPS, SOCKS5)
  • टाइमआउट, हेडर, User-Agent का कस्टमाइज़ेशन
  • बड़े रिस्पॉन्स के लिए स्ट्रीमिंग सपोर्ट
  • डिफ़ॉल्ट सुरक्षा (SSL सर्टिफिकेट वेरिफिकेशन)

इंस्टॉलेशन

Reqwest का उपयोग करने के लिए आपको Cargo.toml वाला Rust प्रोजेक्ट चाहिए। [dependencies] सेक्शन में यह डिपेंडेंसी जोड़ें:

[dependencies]
reqwest = { version = "0.12", features = ["json", "multipart", "cookies", "socks"] }
tokio = { version = "1", features = ["full"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"

features की व्याख्या:

  • json — serde के माध्यम से JSON सीरियलाइज़ेशन/डीसीरियलाइज़ेशन सक्षम करता है।
  • multipart — multipart/form-data भेजने के लिए।
  • cookies — ऑटोमैटिक कुकी मैनेजमेंट के लिए।
  • socks — SOCKS5 प्रॉक्सी सपोर्ट के लिए।
  • यदि आपको केवल सिंक्रोनस (ब्लॉकिंग) क्लाइंट चाहिए, तो blocking feature जोड़ें।

सिंक्रोनस उपयोग के लिए (बिना एसिंक्रोनस):

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

कोड उदाहरण के साथ त्वरित शुरुआत

चलिए एक सरल GET रिक्वेस्ट पब्लिक API पर करते हैं और परिणाम दिखाते हैं। main.rs फ़ाइल बनाएं:

use reqwest;
use std::error::Error;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    // GET रिक्वेस्ट करें
    let response = reqwest::get("https://api.github.com/repos/rust-lang/rust")
        .await?;

    // स्टेटस जांचें
    if response.status().is_success() {
        // रिस्पॉन्स बॉडी को JSON में पार्स करें (बिना सख्त टाइपिंग के)
        let body: serde_json::Value = response.json().await?;
        println!("रिपॉजिटरी का नाम: {}", body["full_name"]);
        println!("विवरण: {}", body["description"].as_str().unwrap_or("कोई विवरण नहीं"));
        println!("स्टार्स: {}", body["stargazers_count"]);
    } else {
        eprintln!("त्रुटि: {}", response.status());
    }

    Ok(())
}

cargo run कमांड से चलाएं। आपको Rust रिपॉजिटरी की जानकारी दिखनी चाहिए।

मुख्य तरीके और फ़ंक्शन

1. reqwest::get()

क्या करता है: दिए गए URL पर HTTP GET रिक्वेस्ट करता है। डेटा प्राप्त करने का सबसे सरल तरीका। Response लौटाता है।

पैरामीटर:

  • url: impl IntoUrl — स्ट्रिंग या URL जहां रिक्वेस्ट भेजा जाता है।

उदाहरण:

let resp = reqwest::get("https://httpbin.org/get").await?;
println!("स्टेटस: {}", resp.status());

2. Cli

अनुशंसाएँ