MENU

《Gin》当请求对象为数组时,binding不生效问题解决

July 20, 2021 • gin,技术杂谈,golang阅读设置

请求结构体如下:

// 学生结构
type StudentParam struct {
    StudentID    uint64 `json:"student_id" binding:"required"`
    StudentName         int    `json:"type" binding:"required"`
}
// 批量创建学生
type CreateStudentsParam struct {
    Students  []StudentParam  `json:"students" binding:"required"`
}

控制器代码:

var param CreateStudentsParam 
err := c.ShouldBindJSON(&param)

最后执行结果会发现验证器并不会生效的。
无论你是否提交必填参数,gin都会校验通过,没有按照理想的规则来验证请求参数!

解决方法:
将:

type CreateStudentsParam struct {
    Students  []StudentParam  `json:"students" binding:"required"`
}

替换为:

type CreateStudentsParam struct {
    Students  []StudentParam  `json:"students" binding:"dive"`
}

即可生效!

参考:https://github.com/gin-gonic/gin/issues/1171

Archives QR Code
QR Code for this page
Tipping QR Code