在 gin
里面,我们可以定义一个带切片类型字段的结构体来对切片做表单验证,需要注意的是:
* 对应字段为切片类型 * form
tag 里面的键为
ids[]
的形式(如果是 query 的数组或者 form
里面的数组,如果是 json body 里面就不用 ids[]=
这样传递数组参数) * binding
里面可以使用 dive
来对数组的每一项做验证
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| package main
import ( "log" "net/http"
"github.com/gin-gonic/gin" )
type TestStruct struct { Ids []int `form:"ids[]" binding:"dive,numeric,gt=0"` }
func test(c *gin.Context) { var testStruct TestStruct if c.ShouldBindQuery(&testStruct) == nil { log.Println(testStruct.Ids) c.String(http.StatusOK, "Success") return }
c.String(http.StatusBadRequest, "Failed") return }
func main() { route := gin.Default() route.Any("/test", test) route.Run(":8085") }
|