Mejora del manejo de errores en Gin
El manejo de errores personalizado con Gin implica el uso de un middleware para manejar las respuestas de error. Esto permite separar la lógica de error de la lógica de flujo normal.
Error Handling Middleware
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()
}
}
}
Uso en funciones del controlador
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)
}
Configuración del servidor
func main() {
router := gin.Default()
router.Use(JSONAppErrorReporter())
router.GET("/hostgroups/:id", fetchSingleHostGroup)
router.Run(":3000")
}
Recursos adicionales
Para obtener más información sobre el manejo de errores en Gin, consulte los siguientes recursos:
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3