V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
kayseen
V2EX  ›  Go 编程语言

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

  •  
  •   kayseen · 2020-08-07 17:58:55 +08:00 · 2143 次点击
    这是一个创建于 1573 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在看一个 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"`
    }
    
    12 条回复    2020-08-08 14:21:32 +08:00
    cnbattle
        1
    cnbattle  
       2020-08-07 18:09:17 +08:00
    反射 tag 看下 reflect 包
    kidlj
        2
    kidlj  
       2020-08-07 18:28:42 +08:00
    Struct tags
    ila
        3
    ila  
       2020-08-07 18:31:41 +08:00 via Android
    可以用 gojsonschema 做参数检验
    kwlokip
        4
    kwlokip  
       2020-08-07 18:43:32 +08:00 via Android
    gin 文档有写是用另一个库的
    janxin
        5
    janxin  
       2020-08-07 18:54:54 +08:00
    json 是给标准库 encoding/json 用的
    gorm 是给 gorm 用的
    valid 不是很确定,beego 的吗? gin 也有,是用的 go-playground/validator/v10
    kayseen
        6
    kayseen  
    OP
       2020-08-07 18:55:32 +08:00 via Android
    @kidlj 请问什么意思啊。。
    kayseen
        7
    kayseen  
    OP
       2020-08-07 18:56:44 +08:00 via Android
    @cnbattle 谁问意思是指点进去看定义吗?这个不能点进去。。
    kayseen
        8
    kayseen  
    OP
       2020-08-07 18:58:17 +08:00 via Android
    @janxin 感谢回复,valid 应该是 beego 的 validation 包,还有一个 form 不知道是不是用的 gin...
    saltbo
        9
    saltbo  
       2020-08-07 19:02:27 +08:00
    cnbattle
        10
    cnbattle  
       2020-08-08 09:13:59 +08:00
    @kayseen https://www.jianshu.com/p/c7d5c1c8a2d8 看下 “ Person struct “ 的 ”validation“ 函数的代码
    zibber
        11
    zibber  
       2020-08-08 10:30:05 +08:00
    gin 封装了 validator 包, tag 里加 binding
    kayseen
        12
    kayseen  
    OP
       2020-08-08 14:21:32 +08:00
    @saltbo
    @cnbattle
    @zibber
    很有用的资料, 非常感谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1198 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:16 · PVG 07:16 · LAX 15:16 · JFK 18:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.