![25fc244643c958c91b7d983cd84a789f.png](https://i-blog.csdnimg.cn/blog_migrate/f8e474e0aa3313b1110b987cf6cc91c8.jpeg)
因为gopkg.in/go-playground/validator.v9 这个最新已经到了V9版本,而Gin引用的还是V8版本。但官方给的例子,如果进行验证,输出的信息都是诸如:
{ "message": "Key: 'LoginRequest.Mobile' Error:Field validation for 'Mobile' failed on the 'required' tagKey: 'LoginRequest.Code' Error:Field validation for 'Code' failed on the 'required' tag"}
不能作为正式环境的交互提示使用。
所以这里我们单独引用V9版本对我们的结构体字段进行验证,使其不依赖Gin框架,方便使用其他框架的用户参考使用。
首先利用Gin模型绑定,获取请求数据
这里定义的模型结构体
type User struct { Id int64 `json:"id"` Name string `json:"name" validate:"required"` User string `json:"user"` Password string `json:"password" validate:"required"` CreateTime int `json:"create_time"`} // 绑定字段 var user User // 获取结构体数据 c.ShouldBindJSON(&user)
实例化验证器进行验证
//先引入 import "gopkg.in/go-playground/validator.v9"
validate := validator.New() err := validate.Struct(&user) errs := err.(validator.ValidationErrors) for _, e := range errs { fmt.Println(e.Field()) fmt.Println(e.ActualTag()) //这里根据获得的字段和规则,输出自定义的错误信息,比如“xxx不能为空”等 }
validator支持100多种规则,也支持自定义,感兴趣的可以动手试试。