HTTP क्लाइंट Rust में: अनुरोध सही तरीके से करें
Rust एक आधुनिक सिस्टम प्रोग्रामिंग भाषा है जिसने अपनी प्रदर्शन क्षमता और मेमोरी सुरक्षा के कारण लोकप्रियता हासिल की है। हालांकि, Python या JavaScript के आदी कई डेवलपर्स सोचते हैं: Rust में HTTP अनुरोध कैसे करें? इस लेख में हम लोकप्रिय लाइब्रेरी reqwest का उपयोग करके Rust में HTTP क्लाइंट बनाने पर चर्चा करेंगे। आप सीखेंगे कि GET और POST अनुरोध कैसे करें, JSON को कैसे प्रोसेस करें, हेडर को कैसे मैनेज करें और एसिंक्रोनस के साथ कैसे काम करें। पढ़ने के बाद आप अपने Rust प्रोजेक्ट्स में HTTP क्लाइंट को आत्मविश्वास से शामिल कर पाएंगे।
1. पर्यावरण की स्थापना और कॉन्फ़िगरेशन
शुरू करने के लिए, एक नया Rust प्रोजेक्ट बनाएं और आवश्यक डिपेंडेंसी जोड़ें। टर्मिनल खोलें और निम्नलिखित चलाएं:
cargo new http_client_rustcd http_client_rustअब Cargo.toml फ़ाइल को संपादित करें और निम्नलिखित डिपेंडेंसी जोड़ें:
[dependencies]reqwest = { version = "0.11", features = ["json"] }tokio = { version = "1", features = ["full"] }serde = { version = "1.0", features = ["derive"] }serde_json = "1.0"प्रत्येक लाइब्रेरी को समझते हैं:
- reqwest — मुख्य HTTP क्लाइंट।
jsonफ़्लैग JSON सीरियलाइज़ेशन/डीसीरियलाइज़ेशन का समर्थन जोड़ता है। - tokio — एसिंक्रोनस रनटाइम, जो reqwest को एसिंक्रोनस मोड में चलाने के लिए आवश्यक है।
- serde और serde_json — JSON संरचनाओं के साथ काम करने के लिए।
डिपेंडेंसी जोड़ने के बाद, सभी लाइब्रेरी डाउनलोड और कंपाइल करने के लिए cargo build चलाएं।
2. बेसिक GET अनुरोध
चलिए एक सार्वजनिक API पर सरल GET अनुरोध से शुरू करते हैं। हम रिस्पॉन्स के लिए एक स्ट्रक्चर बनाएंगे और JSONPlaceholder सेवा पर अनुरोध करेंगे:
use reqwest;use serde::Deserialize;
#[derive(Debug, Deserialize)]struct Post { userId: u32, id: u32, title: String, body: String,}
#[tokio::main]async fn main() -> Result<(), reqwest::Error> { let url = "https://jsonplaceholder.typicode.com/posts/1"; let response = reqwest::get(url).await?; let post: Post = response.json().await?; println!("{:#?}", post); Ok(())}कोड को समझते हैं:
- एट्रीब्यूट
#[derive(Debug, Deserialize)]आउटपुट और डीसीरियलाइज़ेशन के लिए ट्रेट्स को ऑटोमैटिकली जनरेट करता है। #[tokio::main]फ़ंक्शन को एसिंक्रोनस एंट्री पॉइंट में बदल देता है।reqwest::get()GET अनुरोध करता है, और.awaitइसके पूरा होने की प्रतीक्षा करता है।response.json()JSON रिस्पॉन्स को हमारे स्ट्रक्चर में बदलता है।
cargo run कमांड से कोड चलाएं। आप कंसोल में पोस्ट का डेटा देखेंगे।
3. डेटा भेजने के साथ POST अनुरोध
अब हम समझेंगे कि सर्वर पर डेटा कैसे भेजें। POST अनुरोध के लिए हमें भेजे जाने वाले डेटा के लिए एक स्ट्रक्चर बनाना होगा और post() मेथड का उपयोग करना होगा:
use reqwest::Client;use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize)]struct NewPost { title: String, body: String, userId: u32,}
#[derive(Debug, Deserialize)]struct CreatedPost { id: u32, title: String, body: String, userId: u32,}
#[tokio::main]async fn main() -> Result<(), reqwest::Error> { let client = Client::new(); let new_post = NewPost { title: "Rust पर मेरी पहली पोस्ट".to_string(), body: "यह reqwest के साथ भेजी गई पोस्ट का बॉडी है".to_string(), userId: 1, }; let response = client .post("https://jsonplaceholder.typicode.com/posts") .json(&new_post) .send() .await?; let created_post: CreatedPost = response.json().await?; println!("पोस्ट ID के साथ बनाई गई: {}", created_post.id); println
```