这篇文章主要解决了在使用Go语言的gin框架进行请求绑定时,如果请求对象为数组,绑定可能不会生效的问题。文章首先展示了问题的产生,然后提供了解决方案:在数组类型的绑定标签中,将required改为dive。这样,gin就会递归验证数组中的每一个对象。最后,文章提供了相关的参考链接。
请求结构体如下
// 学生结构
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(¶m)
解决方法
type CreateStudentsParam struct {
Students []StudentParam `json:"students" binding:"dive"` // 将binding:"required"改为binding:"dive"
}