gin 项目中的结构体字段验证问题

2020-08-07 17:58:55 +08:00
 kayseen

在看一个 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"`
}
2034 次点击
所在节点    Go 编程语言
12 条回复
cnbattle
2020-08-07 18:09:17 +08:00
反射 tag 看下 reflect 包
kidlj
2020-08-07 18:28:42 +08:00
Struct tags
ila
2020-08-07 18:31:41 +08:00
可以用 gojsonschema 做参数检验
kwlokip
2020-08-07 18:43:32 +08:00
gin 文档有写是用另一个库的
janxin
2020-08-07 18:54:54 +08:00
json 是给标准库 encoding/json 用的
gorm 是给 gorm 用的
valid 不是很确定,beego 的吗? gin 也有,是用的 go-playground/validator/v10
kayseen
2020-08-07 18:55:32 +08:00
@kidlj 请问什么意思啊。。
kayseen
2020-08-07 18:56:44 +08:00
@cnbattle 谁问意思是指点进去看定义吗?这个不能点进去。。
kayseen
2020-08-07 18:58:17 +08:00
@janxin 感谢回复,valid 应该是 beego 的 validation 包,还有一个 form 不知道是不是用的 gin...
saltbo
2020-08-07 19:02:27 +08:00
cnbattle
2020-08-08 09:13:59 +08:00
@kayseen https://www.jianshu.com/p/c7d5c1c8a2d8 看下 “ Person struct “ 的 ”validation“ 函数的代码
zibber
2020-08-08 10:30:05 +08:00
gin 封装了 validator 包, tag 里加 binding
kayseen
2020-08-08 14:21:32 +08:00
@saltbo
@cnbattle
@zibber
很有用的资料, 非常感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/696546

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX