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

November 24, 2022

这篇文章主要解决了在使用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(&param)

解决方法

type CreateStudentsParam struct {
    Students  []StudentParam  `json:"students" binding:"dive"` // 将binding:"required"改为binding:"dive"
}

参考

https://www.utf8.hk/archives/go-gin-binding-error.html

Go

IARNO

服务端开发

gin proxy代理

Django 项目实践01