gin框架和gorm框架(不断更新......)

Gin怎么做参数校验

在 Gin 框架中,你可以使用 binding 和 validator 包来进行参数校验。

  • 定义请求参数的结构体:
type CreateUserRequest struct {
    Username string `json:"username" binding:"required,alphanum,min=4,max=20"`
    Email    string `json:"email" binding:"required,email"`
    Password string `json:"password" binding:"required,min=6"`
}

在上述结构体中,使用 binding 标签定义了参数的验证规则。例如,username 必须是字母和数字的组合,且长度在 4 到 20 之间;email 必须是有效的电子邮件地址;password 的长度至少为 6。

  • 在路由处理函数中进行参数校验:
func CreateUser(c *gin.Context) {
    var req CreateUserRequest
    if err := c.ShouldBindJSON(&req); err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }

    // 在这里处理用户创建逻辑,req 中已经是经过验证的参数
    // ...
}

在处理函数中,通过 c.ShouldBindJSON 将请求的 JSON 数据绑定到结构体中,并自动进行参数校验。如果参数不符合规则,将返回 http.StatusBadRequest 错误响应。

  • 自定义验证器(可选):
// 自定义邮箱格式验证器
var validate *validator.Validate

func init() {
    validate = validator.New()
    validate.RegisterValidation("email_custom", func(fl validator.FieldLevel) bool {
        email := fl.Field().String()
        return strings.Contains(email, "@example.com")
    })
}

// 在结构体中使用自定义验证器
type CreateUserRequest struct {
    Email string `json:"email" binding:"required,email_custom"`
}

在这个例子中,我们注册了一个自定义的邮箱验证器 email_custom,然后在结构体中使用该验证器。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值