Улучшение обработки ошибок в Gin
Пользовательская обработка ошибок с помощью Gin предполагает использование промежуточного программного обеспечения для обработки ответов об ошибках. Это позволяет отделить логику ошибок от логики нормального потока.
Промежуточное ПО обработки ошибок
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")
}
Дополнительные ресурсы
Для получения дополнительной информации об обработке ошибок в Gin обратитесь к следующим ресурсам:
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3