gin框架自定义验证错误提示信息

2021-08-11  本文已影响0人  多不了少不了
// 定义请求
type LoginRequest struct {
    Mobile string `form:"mobile" json:"mobile" binding:"required" required_err:"请输入手机号码"`
    Code   string `form:"code" json:"code" binding:"required" err:"请输入验证码"`
}

// 自定义错误消息
func GetError(errs validator.ValidationErrors, r interface{}) string {
    s := reflect.TypeOf(r)
    for _, fieldError := range errs {
        filed, _ := s.FieldByName(fieldError.Field())
        errTag := fieldError.Tag() + "_err"
        // 获取对应binding得错误消息
        errTagText := filed.Tag.Get(errTag)
        // 获取统一错误消息
        errText := filed.Tag.Get("err")
        if errTagText != "" {
            return errTagText
        }
        if errText != "" {
            return errText
        }
        return fieldError.Field() + ":" + fieldError.Tag()
    }
    return ""
}

// 解析参数返回错误
func Test(c *gin.Context) {
    var r LoginRequest
    if err := c.ShouldBindQuery(&r); err != nil {
        c.String(200, GetError(err.(validator.ValidationErrors), r))
        return
    }
    c.String(200, "SUCCESS")
    return
}

上一篇下一篇

猜你喜欢

热点阅读