记录一下实操过程中遇到的问题或者疑惑,也有一些是需要注意的点,既然花了时间解决就值得记录下来
-
required认为值为0不通过校验
- 背景:
gin框架中一般用通过定义结构体中的字段Tag标签来设置参数校验规则和解析字段名,转json相关信息,其中字段是否为必须项规则写在字段Tag:`binding:"required"` - 场景描述:
我定义了一个VO结构体用来绑定前端参数,其中有个字段Status int `binding:"required, eq=0|eq=1"`,我希望绑定的时候验证Status不为空,且值为0或1
但是实际上Status为1的时候通过校验,为0的时候却返回了error:Error:Field validation for 'Status' failed on the 'required' tag即Status字段绑定时不满足required校验
实际处理过程没这么清晰,但最后查到了文档`binding:"required"`会认为0是空值而不通过校验 - 解决方案:
把整数字段改成整数指针类型,指针没有默认值0,也就没有这个问题了,注意取值加*,设值加&总之记得他是指针就好了 - 结论:
对数字类型的字段使用gin的校验
- 背景: