在看一个 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"` }
![]() | 1 cnbattle 2020-08-07 18:09:17 +08:00 反射 tag 看下 reflect 包 |
![]() | 2 kidlj 2020-08-07 18:28:42 +08:00 Struct tags |
3 ila 2020-08-07 18:31:41 +08:00 via Android 可以用 gojsonschema 做参数检验 |
4 kwlokip 2020-08-07 18:43:32 +08:00 via Android gin 文档有写是用另一个库的 |
![]() | 5 janxin 2020-08-07 18:54:54 +08:00 json 是给标准库 encoding/json 用的 gorm 是给 gorm 用的 valid 不是很确定,beego 的吗? gin 也有,是用的 go-playground/validator/v10 |
![]() | 8 kayseen OP @janxin 感谢回复,valid 应该是 beego 的 validation 包,还有一个 form 不知道是不是用的 gin... |
![]() | 9 saltbo 2020-08-07 19:02:27 +08:00 |
![]() | 10 cnbattle 2020-08-08 09:13:59 +08:00 @kayseen https://www.jianshu.com/p/c7d5c1c8a2d8 看下 “ Person struct “ 的 ”validation“ 函数的代码 |
11 zibber 2020-08-08 10:30:05 +08:00 gin 封装了 validator 包, tag 里加 binding |