0%

gin切片表单验证

在 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")
}