Golang Go语言中gin项目中的结构体字段验证问题
Golang Go语言中gin项目中的结构体字段验证问题
在看一个 gin 项目的源码, 项目中使用了 gorm 语句, 和 beego 的 validation, 然后发现在定义的结构体中, 有几种不同的注释, 后面的注释有 json, form, gorm 和 valid, 想请教一下后面注释的验证功能属于哪个包的功能?或者是 go 的原生验证吗? 因为想查阅一下完整的验证, 不知道从何下手…
一:
type Article struct {
TagID int `json:"tag_id" gorm:"index"`
Desc string `json:"desc"`
Content string `json:"content"`
}
二:
type AddTagForm struct {
Name string `form:"name" valid:"Required;MaxSize(100)"`
CreatedBy string `form:"created_by" valid:"Required;MaxSize(100)"`
State int `form:"state" valid:"Range(0,1)"`
}
三:
type auth struct {
Username string `valid:"Required; MaxSize(50)"`
Password string `valid:"Required; MaxSize(50)"`
}
四:
type Auth struct {
ID int `gorm:"primary_key" json:"id"`
Username string `json:"username"`
Password string `json:"password"`
}
更多关于Golang Go语言中gin项目中的结构体字段验证问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html
反射 tag 看下 reflect 包
更多关于Golang Go语言中gin项目中的结构体字段验证问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Struct tags
可以用 gojsonschema 做参数检验
gin 文档有写是用另一个库的
json 是给标准库 encoding/json 用的
gorm 是给 gorm 用的
valid 不是很确定,beego 的吗? gin 也有,是用的 go-playground/validator/v10
请问什么意思啊。。
谁问意思是指点进去看定义吗?这个不能点进去。。
感谢回复,valid 应该是 beego 的 validation 包,还有一个 form 不知道是不是用的 gin…
https://www.jianshu.com/p/c7d5c1c8a2d8 看下 “ Person struct “ 的 ”validation“ 函数的代码
gin 封装了 validator 包, tag 里加 binding
很有用的资料, 非常感谢
在Golang的Gin项目中,结构体字段验证是一个常见且重要的需求。Gin本身并不直接提供验证功能,但你可以结合一些流行的验证库,如go-playground/validator
,来实现这一功能。
以下是一个使用go-playground/validator
进行结构体字段验证的基本步骤:
-
安装验证库: 使用
go get
命令安装go-playground/validator
库。go get github.com/go-playground/validator/v10
-
定义结构体和标签: 在你的结构体字段上添加验证标签,如
json
、validate
等。type User struct { Email string `json:"email" validate:"required,email"` Age int `json:"age" validate:"gte=0,lte=130"` }
-
初始化验证器: 创建一个验证器实例,并注册自定义标签(如果有)。
validate := validator.New()
-
执行验证: 使用验证器对结构体实例进行验证。
err := validate.Struct(user) if err != nil { // 处理验证错误 for _, err := range err.(validator.ValidationErrors) { fmt.Println(err.Field(), err.Tag()) } }
通过以上步骤,你可以在Gin项目中轻松实现结构体字段的验证。这有助于确保输入数据的正确性,提高应用的健壮性。