आईडेम्पोटेंस
फाइबर का आईडेम्पोटेंस मिडलवेयर नुकसान-सहनशील 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 में सेट करें
}