本文是对 validate tag not working in ShouldBindWith 的回答。
有人提了这么一个问题:
package main
import (
"log"
"net/http"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
)
// MyStruct ..
type MyStruct struct {
Order string `form:"order,default=DESC" validate:"omitempty,oneof=ASC DESC"`
}
func startPage(c *gin.Context) {
var person MyStruct
if c.ShouldBindWith(&person, binding.Query) == nil {
log.Println("====== Only Bind By Query String ======")
log.Println(person.Order)
c.String(http.StatusOK, "Success")
return
// log.Println(person.Address)
}
c.String(http.StatusBadRequest, "Failed")
return
}
func main() {
route := gin.Default()
route.Any("/testing", startPage)
route.Run(":8085")
}
然后表单验证的时候,明明 Order 传递了一个不符合 oneof=ASC DESC 的值,但却验证通过了。
原因
虽然 gin 使用了
在Gin中使用ShouldBindWith时,如何正确应用Validator标签进行表单验证

最低0.47元/天 解锁文章
3156

被折叠的 条评论
为什么被折叠?



