禁止在gin golang的请求正文中添加额外的键

6ojccjat  于 2023-02-06  发布在  Go
关注(0)|答案(1)|浏览(144)

我想对JSON主体中发送的额外密钥进行验证。
我的模型

type User struct {
    gorm.Model
    Username string `json:"username" validate:"required" gorm:"unique"`
    Email    string `json:"email" validate:"required,email" gorm:"unique"`
    Password string `json:"password" validate:"required" `

}

现在,如果有人在请求体中发送一个id:111,那么它将被保存到db中。
我使用的验证器是"www.example.com",但它不工作github.com/go-playground/validator/v10" but it's not working

validate := validator.New()
err := validate.Struct(user)
sg2wtvxw

sg2wtvxw1#

默认情况下,你使用的go-playground/validator包不会验证JSON主体中的未知字段,要只验证结构体中的字段,可以使用omitempty标记:

type User struct {
    gorm.Model
    Username string `json:"username" validate:"required" gorm:"unique"`
    Email    string `json:"email" validate:"required,email" gorm:"unique"`
    Password string `json:"password" validate:"required" `
    ID       int    `json:"id,omitempty" validate:"-"`
}

omitempty标记表示如果ID字段的值为零值(0表示int),则ID字段不会被封送到JSON中; validate:“-”标记表示该字段不会被验证。

相关问题