ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
这里主要整理了 gin 常用的表单参数验证语法,方便开发者快速查询最常用的语法。 gin的表单参数验证语法引用了第三方包:[https://github.com/go-playground/validator](https://github.com/go-playground/validator) #### 1.基本语法示例,我们以用户注册的结构体为例进行示范说明 ``` type Register struct { UserName string `form:"user_name" json:"user_name" binding:"required,min=1"` Pass string `form:"pass" json:"pass" binding:"required,min=6,max=20"` Phone string `form:"phone" json:"phone"` CardNo string `form:"card_no" json:"card_no"` } ``` 在以上结构体中: `form`:表示验证 form 表单提交的字段。 `json`:表示通过 json 方式(postman中就是 raw 方式,本质仍然是 application/json 编码方式)提交的数据字段。 `binding`:任何需要验证的字段首先需要设置 binding 标签,然后指定语法。 注意:在 ginskeleton 中,json 标签是必须都要指定的,因为 ginskeleton 依赖于 json 标签后续做了参数绑定到上下文的功能,form 标签只有表单参数以 form-data 方式提交时是必须的。 #### 2.常用的验证语法清单 ![](https://img.kancloud.cn/81/01/8101c699f25e99b3106dffd3731f9d34_1065x663.png) ![](https://img.kancloud.cn/84/9f/849f81b7dad9ca5e855efddd296dd460_1141x616.png) 备注: 多个验证规则可以同时使用,使用时使用逗号(,)分割语法。 #### 2.复杂表单参数验证,主要是结构体嵌套结构体方式(客户端往往以 raw 、application/json 方式提交) ``` type Demo struct { No int `form:"no" json:"no" binding:"required"` Title string `form:"title" json:"title" binding:"required"` List []List `form:"artitle_list" json:"artitle_list" binding:"required,min=2,dive"` } // 以下结构体被嵌套 type List struct { SubTitle string `form:"sub_title" json:"sub_title" binding:"required"` Remark string `json:"remark" binding:"required"` } ``` 在以上结构体中我们解释几个关键点: `List`:对应的 min 表示该数组至少有2个成员结构体(对象) `dive`:表示深入该数组内部继续验证每一个结构体对应的字段。