ip:字段值是否包含有效的IP地址,validate:"ip" ipv4:字段值是否包含有效的ipv4地址,validate:"ipv4" ipv6:字段值是否包含有效的ipv6地址,validate:"ipv6" uri:字段值是否包含有效的uri,validate:"uri" url:字段值是否包含有效的uri,validate:"url" 5、日期校验 Datestring`json:"date" binding:"required,datetime...
package mainimport ( "fmt" "github.com/go-playground/validator/v10")type User struct { Username string `validate:"required"` Age int `validate:"gte=0,lte=130"` Email string `validate:"required,email"`}func main() { validate := validator.New() user := &...
...// 获取验证引擎,并类型转换成*validator.Validateifv, ok := binding.Validator.Engine().(*validator.Validate); ok {// 注册notoneof的验证函数v.RegisterValidation("notoneof",func(fl validator.FieldLevel)bool{// split values using ` `. eg. notoneof=bob rob job// 用空格分割ontoneof的值...
Namestring`json:"name" validate:"required,min=3,max=100"` Emailstring`json:"email" validate:"required,email"` } funchandler(c *gin.Context){ varuser User iferr := c.ShouldBindJSON(&user); err !=nil{ c.JSON(http.StatusBadRequest, gin.H...
后来在同事CR的时候,说GIN有更好的参数检验方法,gin框架使用github.com/go-playground/validator进行参数校验,我们只需要在定义结构体时使用binding或validatetag标识相关校验规则,就可以进行参数校验了,很方便。相信也有很多小伙伴不知道这个功能,今天就来介绍一下这部分。
代码说binding.Validator.Engine()里面装着*validator.Validate,go-playground/validator/v10说那咱们接着抄例子吧 // 调用它,完成扩展注册funcInitExtendValidation(){v,ok:=binding.Validator.Engine().(*validator.Validate)if!ok{log.Fatal().Msg("validator engine changed")return}// 注册新的自定义验证规则va...
Age int `json:"age" validate:"required,gt=0,lte=120"` Email string `json:"email" validate:"required,email"` } func main() { r := () validate := () ("/user", func(c ) { var user User if err := (user); err != nil { (400, {"error": ()}) return } //处理用户请求...
GetValidate(), tran.GetTrans()) // 注册验证规则,内部使用map类型注册,为协程不安全的,所以需要项目出事化是注册 customValidator.Adds( new(validators.DemoValidator), ) customValidator.RegisterToValidate() return customValidator } //执行 initCustomValidator(initTrans()) 自定义验证规则 package validators ...
.Validator.Engine().(*validator.Validate);ok{zhT:=zh.New()// 中文翻译器enT:=en.New()// 英文翻译器uni:=ut.New(enT,zhT,enT)// locale 通常取决于 http 请求头的 'Accept-Language'varokbool// 也可以使用 uni.FindTranslator(...) 传入多个locale进行查找Trans,ok=uni.GetTranslator(locale)if!
后来在同事CR的时候,说GIN有更好的参数检验方法,gin框架使用github.com/go-playground/validator进行参数校验,我们只需要在定义结构体时使用binding或validatetag标识相关校验规则,就可以进行参数校验了,很方便。相信也有很多小伙伴不知道这个功能,今天就来介绍一下这部分。