跳到主要内容

Go Gin 常用的验证规则

· 阅读需 3 分钟
素明诚
Full stack development

在 Gin 框架中,数据验证是通过集成的 go-playground/validator 包来实现的。这个包支持许多内置的验证规则,可以用于验证输入数据的各种条件。

常用规则

标签描述
required字段必须有值,不能为默认零值或空
len字段长度必须等于指定的值
min对于数值,最小值必须不小于指定值;对于字符串或数组,长度必须不小于指定值
max对于数值,最大值必须不大于指定值;对于字符串或数组,长度必须不大于指定值
eq字段值必须等于指定的值
ne字段值必须不等于指定的值
lt字段值必须小于指定的值
lte字段值必须小于或等于指定的值
gt字段值必须大于指定的值
gte字段值必须大于或等于指定的值
email字段值必须是有效的电子邮件地址格式
url字段值必须是有效的 URL 格式
alnum字段必须是字母数字字符
numeric字段必须是有效的数字
hexadecimal字段必须是十六进制格式
hexcolor字段必须是有效的十六进制颜色代码
rgb字段必须是有效的 RGB 颜色
rgba字段必须是有效的 RGBA 颜色
hsl字段必须是有效的 HSL 颜色
hsla字段必须是有效的 HSLA 颜色
e164字段必须是有效的 E.164 格式的电话号码
oneof字段值必须是指定列表中的一个
uuid字段值必须是有效的 UUID
uuid3字段值必须是有效的 UUID3 格式
uuid4字段值必须是有效的 UUID4 格式
uuid5字段值必须是有效的 UUID5 格式
ascii字段值必须是 ASCII 字符
printascii字段值必须是可打印的 ASCII 字符

Gin 中使用验证规则

安装 Gin

go get -u github.com/gin-gonic/gin

使用验证规则

type LoginRequest struct {
Username string `form:"username" binding:"required"`
Password string `form:"password" binding:"required,min=6"`
}

处理请求:在你的路由处理函数中,使用 ShouldBindShouldBindJSONShouldBindQuery 等方法来绑定请求数据并触发验证

func login(c *gin.Context) {
var req LoginRequest
if err := c.ShouldBind(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
// 处理登录逻辑...
}

参考链接

https://github.com/go-playground/validator