Gin 如何对请求参数模型绑定和验证?

16 min read

Gin 提供了一个 Bind 方法和一个 ShouldBind 方法,可以将请求参数绑定到一个 struct 类型的变量上,并进行验证。

在控制器方法中,可以通过如下代码进行绑定和验证:

type User struct {
    Name  string `form:"name" binding:"required"`
    Email string `form:"email" binding:"required,email"`
}

func CreateUser(c *gin.Context) {
    var user User
    if err := c.ShouldBind(&user); err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }
    
    // TODO: 创建用户并返回结果
}

在上述代码中,User 是一个 struct 类型,其中使用了 form 标签指定了请求参数的名称,同时使用了 binding 标签来指定需要验证的格式和必填条件。在控制器方法中,使用 ShouldBind 方法将请求参数绑定到 user 变量上,并进行了错误检查。如果有任何错误,则返回一个带有错误信息的 JSON 响应。

除了 ShouldBind 方法,Gin 还提供了许多其他方法来支持不同类型的请求参数的绑定和验证,例如 BindJSONBindXMLBindQuery 等等。可以根据具体情况选择不同的方法。