अनुरोध और प्रतिक्रिया मिडलवेयर

Resty में मिडलवेयर का उपयोग अनुरोधों को बाधित करने और प्रतिक्रियाओं को बाद में पकड़ने की क्षमता प्रदान करता है, जिससे अनुरोध और प्रतिक्रिया के संचालन को विशिष्ट रूप से संशोधित करने की सुविधा होती है। यह उपाय कॉलबैक फ़ंक्शंस से अधिक लचीला है।

// एक Resty client बनाएं
client := resty.New()

// अनुरोध मिडलवेयर पंजीकृत करें
client.OnBeforeRequest(func(c *resty.Client, req *resty.Request) error {
    // अब आप क्लाइंट और वर्तमान अनुरोध ऑब्जेक्ट तक पहुँच सकते हैं
    // जरूरत अनुसार कार्रवाई करें

    return nil  // सफलतापूर्वक हो तो nil लौटाएं, अन्यथा त्रुटि लौटाएं
  })

// प्रतिक्रिया मिडलवेयर पंजीकृत करें
client.OnAfterResponse(func(c *resty.Client, resp *resty.Response) error {
    // अब आप क्लाइंट और वर्तमान प्रतिक्रिया ऑब्जेक्ट तक पहुँच सकते हैं
    // जरूरत अनुसार कार्रवाई करें

    return nil  // सफलतापूर्वक हो तो nil लौटाएं, अन्यथा त्रुटि लौटाएं
  })

त्रुटि हुक्स

Resty एक त्रुटि हुक प्रदान करता है, जिसे निम्न आवश्यकताओं में बुलाया जा सकता है:

  • क्लाइंट अनुरोध भेजने में समय सीमा, TLS हैंडशेक विफलता आदि के कारण असमर्थ है।
  • अनुरोध को अधिकतम बार पुनः प्रयास करने के बावजूद भी वह असफल होता है।

अगर सर्वर प्रतिक्रिया देता है, तो मूल त्रुटि को *resty.ResponseError में लपेटा जाएगा, जिसमें आखिरी प्राप्त प्रतिक्रिया शामिल होगी।

// एक Resty client बनाएं
client := resty.New()

client.OnError(func(req *resty.Request, err error) {
  if v, ok := err.(*resty.ResponseError); ok {
    // v.Response में सर्वर की अंतिम प्रतिक्रिया होती है
    // v.Err में मूल त्रुटि होती है
  }
  // त्रुटियों को लॉग करें, मेट्रिक्स को बढ़ाएं, आदि
})

पुनर्निर्देशन नीतियाँ

Resty कई उपलब्ध पुनर्निर्देशन नीतियाँ प्रदान करता है और समयानुसार कई नीतियों का समयानुसार उपयोग करने की समर्था प्रदान करता है।

// एक Resty client बनाएं
client := resty.New()

// क्लाइंट के लिए पुनर्निर्देशन नीति सेट करें। जरूरत के हिसाब से एक नीति बनाएं
client.SetRedirectPolicy(resty.FlexibleRedirectPolicy(15))

// पुनर्निर्देशन गणना, डोमेन जांच, आदि जैसी कई नीतियों का उपयोग करें।
client.SetRedirectPolicy(resty.FlexibleRedirectPolicy(20),
                        resty.DomainCheckRedirectPolicy("host1.com", "host2.org", "host3.net"))

अनुकूलित पुनर्निर्देशन नीति

RedirectPolicy इंटरफेस को अमल में लाने और इसे resty client के साथ पंजीकृत करें। अधिक जानकारी के लिए redirect.go का संदर्भ लें।

// एक Resty client बनाएं
client := resty.New()

// रेडायरेक्शन की वैसी श्रेष्ठता वाली फ़ंक्शन का उपयोग करें
client.SetRedirectPolicy(resty.RedirectPolicyFunc(func(req *http.Request, via []*http.Request) error {
  // यहां अपना तर्क लागू करें

  // पुनर्निर्देशन जारी रखने के लिए nil लौटें, या उपनिर्देशन को रोकने के लिए त्रुटि लौटाएं
  return nil
}))

//---------------------------------------------------

// एक और लचीला पुनर्निर्देशन नीति का उपयोग करें, जो एक संरचना का उपयोग करके बनाया जा सकता है
type CustomRedirectPolicy struct {
  // यहां चर चरों की परिभाषा करें
}

func (c *CustomRedirectPolicy) Apply(req *http.Request, via []*http.Request) error {
  // यहां अपना तर्क लागू करें

  // पुनर्निर्देशन जारी रखने के लिए nil लौटें, या उपनिर्देशन को रोकने के लिए त्रुटि लौटाएं
  return nil
}

// resty में पंजीकरण करें
client.SetRedirectPolicy(CustomRedirectPolicy{/* चरों को प्रारंभ करें */})

प्रॉक्सी सेटिंग्स

डिफ़ॉल्ट रूप से, Go HTTP_PROXY पर्यावरण चर माध्यम से प्रॉक्सी का समर्थन करता है। Resty SetProxy और RemoveProxy के माध्यम से प्रॉक्सी समर्थन प्रदान करता है। अपनी आवश्यकतानुसार चुनें।

क्लाइंट स्तर पर प्रॉक्सी सेटिंग्स सभी अनुरोधों पर लागू होंगी।

// एक Resty client बनाएं
client := resty.New()

// प्रॉक्सी URL और पोर्ट सेट करें
client.SetProxy("http://प्रॉक्सी सर्वर:8888")

// प्रॉक्सी सेटिंग्स को हटाने के लिए
client.RemoveProxy()