आईडेम्पोटेंस

फाइबर का आईडेम्पोटेंस मिडलवेयर नुकसान-सहनशील API के निर्माण को अनुमति देता है, जहां बार-बार के अनुरोध (उदाहरण के लिए, क्लाइंट नेटवर्क समस्याओं के कारण) से सर्वर पर एक ही संचालन को गलती से अंजाम न दे, जो सामान्य API आईडेम्पोटेंस तंत्र के रूप में काम करता है।

फ़ंक्शन हस्ताक्षर

func New(config ...Config) fiber.Handler

उदाहरण कोड

फाइबर वेब फ़्रेमवर्क के मिडलवेयर पैकेज को आयात करें।

import (
    "github.com/gofiber/fiber/v2"
    "github.com/gofiber/fiber/v2/middleware/idempotency"
)

डिफ़ॉल्ट विन्यास

फाइबर ऍप्लिकेशन को आरंभ करने के बाद, मिडलवेयर को सीधे संदर्भित किया जा सकता है।

app.Use(idempotency.New())

कस्टम विन्यास

app.Use(idempotency.New(idempotency.Config{
    Lifetime: 42 * time.Minute,
    // ...
}))

विन्यास विकल्प

संपत्ति प्रकार विवरण डिफ़ॉल्ट मान
Next func(*fiber.Ctx) bool Next को स्किप करने के लिए एक फ़ंक्शन, जब यह true लौटता है, मिडलवेयर को चूकदान हो जाता है। सुरक्षित विधि उपयोग के लिए एक फ़ंक्शन
Lifetime time.Duration आईडेम्पोटेंस कुंजी की अधिकतम आयु। 30 * time.Minute
KeyHeader string KeyHeader आईडेम्पोटेंस कुंजी की शीर्षक का नाम है। "X-Idempotency-Key"
KeyHeaderValidate func(string) error KeyHeaderValidate आईडेम्पोटेंस हेडर की वाक्य रचना का मान्यता प्राप्त करने के लिए एक फ़ंक्शन है। एक UUID मान्यता की फ़ंक्शन
KeepResponseHeaders []string KeepResponseHeaders मूल प्रतिक्रिया से संरक्षित करने वाले हेडर की सूची है। nil (सभी हेडर संरक्षित करता है)
Lock Locker Lock आईडेम्पोटेंस कुंजी को बंद करता है। मेमोरी में एक ताला
Storage fiber.Storage आईडेम्पोटेंस कुंजी के अनुसार प्रतिक्रिया डेटा को संग्रहीत करता है। मेमोरी में संग्रहीत

डिफ़ॉल्ट कॉन्फ़िगरेशन

var ConfigDefault = Config{
    Next: func(c *fiber.Ctx) bool {
        // अगर अनुरोध सुरक्षित HTTP विधियों का उपयोग करके किया गया है, तो मिडलवेयर को छोड़ें
        return fiber.IsMethodSafe(c.Method())
    },
    Lifetime: 30 * time.Minute,
    KeyHeader: "X-Idempotency-Key",
    KeyHeaderValidate: func(k string) error {
        if l, wl := len(k), 36; l != wl { // UUID लंबाई 36 वर्ण होती है
            return fmt.Errorf("%w: invalid length: %d != %d", ErrInvalidIdempotencyKey, l, wl)
        }
        return nil
    },
    KeepResponseHeaders: nil,
    Lock: nil, // यहाँ डेटा आवंटन से बचने के लिए ConfigDefault में सेट करें
    Storage: nil, // यहाँ डेटा आवंटन से बचने के लिए ConfigDefault में सेट करें
}