दूरस्थ सर्वर के साथ संचार करने के लिए HTTP एक अविश्वसनीय रूप से लोकप्रिय तरीका है। प्रक्रिया को सरल बनाने में सहायता के लिए इस उत्कृष्ट रस्ट लाइब्रेरी का उपयोग करें।

अधिकांश प्रोग्रामिंग भाषाओं की तरह, आप HTTP पर डेटा भेजने और प्राप्त करने के लिए रस्ट का उपयोग कर सकते हैं। जब आप एक वेब-आधारित सेवा बना रहे हों, तो आपको अक्सर एक या अधिक सेवाओं को एकीकृत करने की आवश्यकता होगी। आप अक्सर उन्हें HTTP अनुरोध भेजकर ऐसा करेंगे।

रस्ट में HTTP ऑपरेशंस के लिए बिल्ट-इन फंक्शनैलिटी है। रस्ट इकोसिस्टम में कई लाइब्रेरी भी हैं जो आपको HTTP के साथ इंटरैक्ट करने और HTTP सेवाओं के निर्माण में मदद करती हैं।

जंग के साथ HTTP अनुरोध करना

HTTP अनुरोध करने के लिए कई रस्ट लाइब्रेरी उपलब्ध हैं, जिनमें अनुरोध, अति, और लहर पुस्तकालयों। रस्ट डेवलपर्स के बीच Reqwest सबसे लोकप्रिय है।

Reqwest एक उच्च-स्तरीय क्लाइंट लाइब्रेरी है जो HTTP अनुरोध करने के लिए एक सरल और सुविधाजनक API प्रदान करती है। Reqwest अनुरोध भेजने और प्रतिक्रियाओं और त्रुटियों को संभालने के लिए कार्यक्षमता प्रदान करता है। यह HTTP अनुरोध करने के पीछे कई विवरणों को सार करता है और उन्नत सुविधाओं का समर्थन करता है जैसे एसिंक्रोनस अनुरोधों का उपयोग करना

टोकियो रनटाइम। यह JSON डिसेरिएलाइज़ेशन, HTTP हेडर, कनेक्शन टाइमआउट और एसएसएल सेटिंग्स को भी हैंडल करता है।

यदि आप रस्ट में नए हैं या HTTP सेवाओं के साथ अनुभव की कमी है, तो आपको Reqwest लाइब्रेरी आसानी से मिल जाएगी।

Reqwest से शुरू करने के लिए, Reqwest और जोड़ें टोकियो आपकी परियोजना की निर्भरताओं के लिए पुस्तकालय। टोकियो एक अतुल्यकालिक रनटाइम लाइब्रेरी है जो Reqwest के साथ इंटरऑपरेट करती है। आप इन निर्भरताओं को अपने साथ जोड़ सकते हैं कार्गो.टोमल रस्ट प्रोजेक्ट बनाने के बाद फाइल करें।

[निर्भरता]
टोकियो = {संस्करण = "1.15", सुविधाएँ = ["भरा हुआ"] }
reqwest = {संस्करण = "0.11", सुविधाएँ = ["जेसन"] }

एक बार जब आप अपने प्रोजेक्ट की निर्भरता में Reqwest और Tokio लाइब्रेरी जोड़ लेते हैं, तो जब आप अपना प्रोग्राम बनाते हैं तो कार्गो उन्हें इंस्टॉल कर देगा।

HTTP Reqwest के साथ अनुरोध प्राप्त करता है

आप वेब सर्वर से डेटा पुनर्प्राप्त करने के लिए GET अनुरोध करेंगे। GET अनुरोध HTML पृष्ठ, JSON डेटा, या पुनर्प्राप्त कर सकते हैं बाइनरी फ़ाइलें जैसे चित्र या वीडियो.

Reqwest आपको अनुरोध के लिए क्वेरी पैरामीटर और हेडर के साथ URL समापन बिंदु को एक स्ट्रिंग के रूप में निर्दिष्ट करने देता है।

यहां बताया गया है कि आप किसी URL पर HTTP GET अनुरोध कैसे भेज सकते हैं:

उपयोग अनुरोध:: त्रुटि;

asyncfnget_request() -> परिणाम {
होने देना प्रतिक्रिया = अनुरोध पश्चिम:: प्राप्त करें (" https://www.example.com").इंतजार?;
प्रिंटल!("दर्जा: {}", प्रतिक्रिया। स्थिति ());

होने देना शरीर = प्रतिक्रिया.पाठ ()।इंतजार?;
प्रिंटल!("बॉडी:\n{}", शरीर);

ठीक(())
}

#[टोकियो:: मुख्य]
asyncfnमुख्य() -> परिणाम {
get_request ()।इंतजार?;
ठीक(())
}

यह कोड एक अतुल्यकालिक फ़ंक्शन को परिभाषित करता है, get_request, example.com के अनुरोध से प्रतिक्रिया विवरण प्रिंट करने के लिए। यह कॉल करता है reqwest मॉड्यूल पाना विधि और प्रिंट करता है प्रतिक्रिया की स्थिति कोड और शरीर।

यहाँ कॉल करने का परिणाम है get_request समारोह से मुख्य समारोह:

Reqwest के साथ HTTP त्रुटियों को संभालना

जब वे उत्पन्न होते हैं तो आपको HTTP अनुरोधों से त्रुटियों को संभालने की आवश्यकता होगी। Reqwest पुस्तकालय एक प्रदान करता है गलती प्रकार जिसे आप त्रुटियों को संभालने के लिए उपयोग कर सकते हैं। इसके अतिरिक्त, वेब सर्वर से HTTP स्थिति कोड अनुरोध की स्थिति के बारे में जानकारी प्रदान कर सकते हैं।

यहां बताया गया है कि आप Reqwest के साथ अपने अनुरोधों के लिए HTTP त्रुटियों को कैसे प्रबंधित कर सकते हैं:

उपयोग अनुरोध:: त्रुटि;

asyncfnhandle_error() -> परिणाम {
होने देना प्रतिक्रिया = अनुरोध पश्चिम:: प्राप्त करें (" https://www.example.com").इंतजार?;

मिलान प्रतिक्रिया.स्थिति ()। as_u16 () {
200..=299 => {
होने देना शरीर = प्रतिक्रिया.पाठ ()।इंतजार?;
प्रिंटल!("सफलता! शरीर:\n{}", शरीर);
}
400..=599 => {
होने देना स्थिति = प्रतिक्रिया। स्थिति ();
होने देना error_message = response.text ()।इंतजार?;
प्रिंटल!("गलती {}: {}", स्थिति, त्रुटि संदेश);
}
_ => {
प्रिंटल!("अप्रत्याशित स्थिति कोड: {}", प्रतिक्रिया। स्थिति ());
}
}

ठीक(())
}

#[टोकियो:: मुख्य]
asyncfnमुख्य() -> परिणाम {
हैंडल_एरर ()।इंतजार?;
ठीक(())
}

handle_error फ़ंक्शन एक GET अनुरोध करता है example.com, और मैच स्टेटमेंट प्रतिक्रिया स्थिति कोड के आधार पर किसी भी त्रुटि को संभालता है।

फ़ंक्शन सर्वर की प्रतिक्रिया के आधार पर एक संदेश और स्थिति कोड प्रिंट करता है।

Reqwest के साथ HTTP POST अनुरोध भेजना

आप सर्वर पर डेटा सबमिट करने के लिए HTTP POST अनुरोध करेंगे। आप इसका उपयोग करके ऐसा कर सकते हैं अनुरोध पश्चिम:: क्लाइंट संरचना जो क्लाइंट बनाती है और इसका उपयोग करती है अनुरोध पश्चिम:: अनुरोधबिल्डर अनुरोध बनाने के लिए संरचना।

यहां बताया गया है कि आप पोस्ट अनुरोध कैसे कर सकते हैं HTTPbin का POST अनुरोध समापन बिंदु अनुरोध के साथ:

उपयोग अनुरोध:: {क्लाइंट, त्रुटि};

asyncfnइसे डाक से भेजें() -> परिणाम {
होने देना यूआरएल = " https://httpbin.org/post";
होने देना json_data = r#"{"नाम": "जॉन डो", "ईमेल": "[email protected]"}"#;

होने देना क्लाइंट = रिक्वेस्ट:: क्लाइंट:: नया ();

होने देना प्रतिक्रिया = ग्राहक
पोस्ट (यूआरएल)
हेडर ("सामग्री प्रकार", "एप्लिकेशन/जेसन")
.body (json_data.to_ownership ())
।भेजना()
.इंतजार?;

प्रिंटल!("दर्जा: {}", प्रतिक्रिया। स्थिति ());

होने देना response_body = response.text ()।इंतजार?;
प्रिंटल!("प्रतिक्रिया का मुख्य भाग:\n{}", प्रतिक्रिया_शरीर);

ठीक(())
}

#[टोकियो:: मुख्य]
asyncfnमुख्य() -> परिणाम {
इसे डाक से भेजें()।इंतजार?;
ठीक(())
}

json_data चर अनुरोध के लिए JSON डेटा को परिभाषित करता है, और ग्राहक चर एक है अनुरोध पश्चिम:: क्लाइंट पोस्ट अनुरोध के लिए उदाहरण।

जवाब चर POST अनुरोध निर्माता है। डाक विधि URL को POST अनुरोध भेजती है, और हैडर विधि एक HTTP शीर्षलेख सेट करती है। शरीर विधि अनुरोध निकाय सेट करती है, और भेजना विधि अनुरोध भेजती है।

इसे डाक से भेजें फ़ंक्शन प्रतिक्रिया स्थिति कोड और बॉडी को कंसोल पर प्रिंट करता है प्रिंटल! मैक्रो:

आपके HTTP अनुरोधों के हेडर और क्वेरी पैरामीटर्स को संभालना

हेडर और क्वेरी पैरामीटर को संभालना HTTP अनुरोध करने का एक महत्वपूर्ण पहलू है। शीर्षलेख में अनुरोधित सामग्री के बारे में प्रमाणीकरण प्रमाण-पत्र या मेटाडेटा जैसी अतिरिक्त जानकारी होती है।

सर्वर द्वारा किसी प्रतिक्रिया को फ़िल्टर या संशोधित करने के लिए URL में अतिरिक्त जानकारी जोड़ने के लिए आप क्वेरी पैरामीटर का उपयोग करेंगे।

हेडर और क्वेरी पैरामीटर को हैंडल करना पोस्ट रिक्वेस्ट भेजने के समान प्रक्रिया का अनुसरण करता है। यहां बताया गया है कि आप Reqwest के साथ अपने HTTP अनुरोधों में हेडर और क्वेरी पैरामीटर कैसे संभाल सकते हैं:

उपयोग एसटीडी:: संग्रह:: हैश मैप;
उपयोग अनुरोध पश्चिम:: {त्रुटि, हेडर};

#[टोकियो:: मुख्य]
asyncfnमुख्य() -> परिणाम {
हेडर_for_requests ()।इंतजार?;
ठीक(())
}

asyncfnहैडर_for_requests() -> परिणाम {
// अनुरोध के लिए URL और हेडर सेट करें
होने देना यूआरएल = " https://example.com/api";
होने देनामुठ हेडर = हेडर:: हेडर मैप:: नया ();
हेडर.इन्सर्ट (हेडर:: USER_AGENT, हेडर:: हेडर वैल्यू:: from_static ("अनुरोध"));
हेडर.इन्सर्ट (हेडर:: CONTENT_TYPE, हेडर:: हेडर वैल्यू:: from_static ("एप्लिकेशन/जेसन"));

// अनुरोध के लिए क्वेरी पैरामीटर सेट करें
होने देनामुठ पैराम्स = हैश मैप:: नया ();
पैराम्स.इन्सर्ट ("फू", "छड़");
पैराम्स.इन्सर्ट ("बाज", "कुक्स");

// अनुरोध करें
होने देना प्रतिक्रिया = अनुरोध:: ग्राहक:: नया ()
.get (यूआरएल)
हेडर (हेडर)
.क्वेरी (और पैराम्स)
।भेजना()
.इंतजार?;

// प्रतिक्रिया को संभालें
प्रिंटल!("{:#?}", जवाब);

ठीक(())
}

आप उन क्वेरी पैरामीटर्स के लिए एक हैशमैप बनाएँगे जिन्हें आप पास करते हैं जिज्ञासा तरीका। का एक उदाहरण बनाएँ हेडर:: हेडर मैप हेडर जोड़ने के लिए टाइप करें।

हैडर_for_requests फ़ंक्शन एक GET अनुरोध भेजता है example.com एकाधिक शीर्षलेख और क्वेरी पैरामीटर के साथ। यह उपयोग करता है हेडर और जिज्ञासा विधियाँ जो क्रमशः हेडर और क्वेरी पैरामीटर वाले मानचित्र लेती हैं।

आप WASM के साथ रस्ट में फुल स्टैक वेबऐप बना सकते हैं

HTTP अनुरोध करना एक ऐसा कौशल है जो परिष्कृत अनुप्रयोगों के निर्माण के लिए आसान है जो अन्य अनुप्रयोगों से कार्यक्षमता को एकीकृत करता है।

आप रस्ट में पर्सी, यू और सीकैमोर जैसे पुस्तकालयों के साथ पूर्ण-स्टैक वेब एप्लिकेशन बना सकते हैं जो उत्कृष्ट विकास अनुभव के लिए अमूर्त जटिलताएं हैं।