"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मैं गोलांग में मिडलवेयर से हैंडलर तक डेटा कैसे पास कर सकता हूं?

मैं गोलांग में मिडलवेयर से हैंडलर तक डेटा कैसे पास कर सकता हूं?

2024-11-15 को प्रकाशित
ब्राउज़ करें:285

How Can I Pass Data from Middleware to Handlers in Golang?

मिडिलवेयर से हैंडलर तक डेटा पास करना

आपके डिज़ाइन में, आपके पास मिडलवेयर है जो एक आने वाले अनुरोध को संसाधित करता है और हैंडलर जो एक http.Handler लौटाता है . आप मिडलवेयर से डेटा को हैंडलर तक भेजना चाहते हैं, विशेष रूप से अनुरोध निकाय से पार्स किया गया JSON वेब टोकन।

इसे प्राप्त करने के लिए, आप गोरिल्ला के संदर्भ पैकेज का उपयोग कर सकते हैं:

import (
    "github.com/gorilla/context"
)

func Middleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // Middleware operations
        // Parse body/get token.
        context.Set(r, "token", token)

        next.ServeHTTP(w, r)
    })
}

func Handler() http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        token := context.Get(r, "token")
    })
}

मिडिलवेयर में, आप अनुरोध निकाय को पार्स करते हैं और अनुरोध संदर्भ में JWT को संग्रहीत करते हैं। फिर, हैंडलर में, आप JWT को संदर्भ से पुनः प्राप्त कर सकते हैं:

token := context.Get(r, "token")

यह आपको JWT को दोबारा पार्स करने से बचने की अनुमति देता है आपके हैंडलर, जो अधिक कुशल हैं। हैंडलर) http.हैंडलर { वापसी http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // मिडलवेयर ऑपरेशंस // बॉडी को पार्स करें/टोकन प्राप्त करें। ctx := context.WithValue(r.Context(), "टोकन", टोकन) अगला.ServeHTTP(w, r.WithContext(ctx)) }) } func हैंडलर() http.हैंडलर { वापसी http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { टोकन := r.Context().वैल्यू('टोकन') }) }

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3