首页 >后端开发 >Golang >如何自定义 Gin 结构标签验证的错误消息?

如何自定义 Gin 结构标签验证的错误消息?

Susan Sarandon
Susan Sarandon原创
2024-12-15 05:42:10517浏览

How to Customize Error Messages from Gin's Struct Tag Validation?

自定义结构标签验证的错误消息

在 Gin 中,结构标签验证用于在数据库插入之前确保数据完整性。返回的默认错误对于用户来说是冗长且无意义的。本文介绍如何自定义错误消息以提供更有意义的响应。

Gin 使用 go-playground/validator/v10 包进行验证。错误作为 validator.ValidationErrors 返回。要自定义消息,请使用标准错误包来解包错误并访问 validator.FieldError 字段。

创建错误模型(例如 ApiError)来定义自定义错误消息的结构。例如:

type ApiError struct {
    Field string
    Msg   string
}

在处理程序中,按如下方式处理错误:

var u User
err := c.BindQuery(&u);
if err != nil {
    var ve validator.ValidationErrors
    if errors.As(err, &ve) {
        out := make([]ApiError, len(ve))
        for i, fe := range ve {
            out[i] = ApiError{fe.Field(), msgForTag(fe.Tag())}
        }
        c.JSON(http.StatusBadRequest, gin.H{"errors": out})
    }
    return
}

最后,定义一个辅助函数以将验证标签映射到自定义消息:

func msgForTag(tag string) string {
    switch tag {
    case "required":
        return "This field is required"
    case "email":
        return "Invalid email"
    }
    return ""
}

使用这种方法,将使用字段名称和基于验证标签的定制消息来自定义错误消息。

以上是如何自定义 Gin 结构标签验证的错误消息?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn