Maison > Article > développement back-end > Comment puis-je gérer efficacement les erreurs au sein de mon application Web Gin en utilisant une approche middleware ?
Amélioration de la gestion des erreurs dans Gin
La gestion personnalisée des erreurs avec Gin implique l'utilisation d'un middleware pour gérer les réponses d'erreur. Cela permet de séparer la logique d'erreur de la logique de flux normale.
Middleware de gestion des erreurs
<code class="go">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() } } }</code>
Utilisation dans les fonctions de gestionnaire
<code class="go">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) }</code>
Configuration du serveur
<code class="go">func main() { router := gin.Default() router.Use(JSONAppErrorReporter()) router.GET("/hostgroups/:id", fetchSingleHostGroup) router.Run(":3000") }</code>
Ressources supplémentaires
Pour plus d'informations sur la gestion des erreurs dans Gin, reportez-vous au ressources suivantes :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!