自定义结构标签验证的错误消息
在 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中文网其他相关文章!