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

मैं मिडलवेयर दृष्टिकोण का उपयोग करके अपने जिन वेब एप्लिकेशन में त्रुटियों को प्रभावी ढंग से कैसे संभाल सकता हूं?

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

How can I effectively handle errors within my Gin web application using a middleware approach?

Gin में त्रुटि प्रबंधन को बढ़ाना

Gin के साथ कस्टम त्रुटि प्रबंधन में त्रुटि प्रतिक्रियाओं को संभालने के लिए एक मिडलवेयर का उपयोग करना शामिल है। यह त्रुटि तर्क को सामान्य प्रवाह तर्क से अलग करने की अनुमति देता है। कोड इंट संदेश स्ट्रिंग } func JSONAppErrorReporter() gin.HandlerFunc { वापसी func(c *gin.Context) { सी.अगला() त्रुटियाँ := c.Errors.ByType(gin.ErrorTypeAny) यदि लेन(त्रुटियाँ) > 0 { त्रुटि := त्रुटियाँ[0]त्रुटि var parsedError *appError त्रुटि स्विच करें। (प्रकार) { मामला * ऐपत्रुटि: पार्सड एरर = त्रुटि।(*एप एरर) गलती करना: पार्सड एरर = &एप एरर { कोड: http.StatusInternalServerError, संदेश: "आंतरिक सर्वर त्रुटि", } } // JSON क्रमबद्ध त्रुटि के साथ उत्तर दें c.IndentedJSON(parsedError.Code, parsedError) सी.निरस्त() } } }

हैंडलर फ़ंक्शंस में उपयोग

type appError struct {
    Code    int
    Message string
}

func JSONAppErrorReporter() gin.HandlerFunc {
    return func(c *gin.Context) {
        c.Next()
        errors := c.Errors.ByType(gin.ErrorTypeAny)

        if len(errors) > 0 {
            err := errors[0].Err
            var parsedError *appError
            switch err.(type) {
            case *appError:
                parsedError = err.(*appError)
            default:
                parsedError = &appError{
                    Code:    http.StatusInternalServerError,
                    Message: "Internal Server Error",
                }
            }
            // Respond with JSON serialized error
            c.IndentedJSON(parsedError.Code, parsedError)
            c.Abort()
        }
    }
}

सर्वर सेटअप

func fetchSingleHostGroup(c *gin.Context) {
    hostgroupID := c.Param("id")

    hostGroupRes, err := getHostGroupResource(hostgroupID)

    if err != nil {
        // Attach error to the context
        c.Error(err)
        return
    }

    // Respond with valid data
    c.JSON(http.StatusOK, *hostGroupRes)
}

अतिरिक्त संसाधन

func main() {
    router := gin.Default()
    router.Use(JSONAppErrorReporter())
    router.GET("/hostgroups/:id", fetchSingleHostGroup)
    router.Run(":3000")
}

[जिन-गोनिक मुद्दा #327](https://github.com/gin-gonic/gin/issues/327)[gin-gonic मुद्दा #651](https://github.com/gin-gonic/gin /issues/651)

[चिर्प](https://github.com/go-chi/chi/tree/master/middleware)

    [gin-merry](https:/ /github.com/gin-contrib/gin-merry)
  • [gin-frsh-showerrors](https://github.com/frsh/gin-showerrors)
नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3