可选指针的 Gin 验证为 uuid?
Gin Validation for optional pointer to be uuid?
我有这个结构
// CreateAccount Create Account Data Args
type CreateAccount struct {
....
RegistrationID string `example:"2c45e4ec-26e0-4043-86e4-c15b9cf985a2" json:"registration_id" binding:"max=63"`
ParentID *string `example:"7c45e4ec-26e0-4043-86e4-c15b9cf985a7" json:"parent_id" format:"uuid"`
}
ParentID为指针,可选。但是如果提供的话,应该是uuid。
var params helper.CreateAccount
if err := ctx.ShouldBindJSON(¶ms); err != nil {
...
}
如果将此添加到 ParentID binding:"uuid"
,它会使 ParentID 成为必填字段!这不是这里的情况。当且仅当给出 ParentID 时,它应该是 uuid。有没有这样设置的。
您必须先放置 omitempty
标签。
type CreateAccount struct {
....
RegistrationID string `json:"registration_id" binding:"max=63"`
ParentID *string `json:"parent_id" binding:"omitempty,uuid"`
}
Allows conditional validation, for example if a field is not set with a value (Determined by the "required" validator) then other validation such as min or max won't run
我读这句话的方式是omitempty
必须放在其他人之前,这样如果值不等于零值就可以停止验证者链。
我有这个结构
// CreateAccount Create Account Data Args
type CreateAccount struct {
....
RegistrationID string `example:"2c45e4ec-26e0-4043-86e4-c15b9cf985a2" json:"registration_id" binding:"max=63"`
ParentID *string `example:"7c45e4ec-26e0-4043-86e4-c15b9cf985a7" json:"parent_id" format:"uuid"`
}
ParentID为指针,可选。但是如果提供的话,应该是uuid。
var params helper.CreateAccount
if err := ctx.ShouldBindJSON(¶ms); err != nil {
...
}
如果将此添加到 ParentID binding:"uuid"
,它会使 ParentID 成为必填字段!这不是这里的情况。当且仅当给出 ParentID 时,它应该是 uuid。有没有这样设置的。
您必须先放置 omitempty
标签。
type CreateAccount struct {
....
RegistrationID string `json:"registration_id" binding:"max=63"`
ParentID *string `json:"parent_id" binding:"omitempty,uuid"`
}
Allows conditional validation, for example if a field is not set with a value (Determined by the "required" validator) then other validation such as min or max won't run
我读这句话的方式是omitempty
必须放在其他人之前,这样如果值不等于零值就可以停止验证者链。