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)
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3