Golang Go语言中 用过 go-playground/validator 的老哥麻烦进来下
Golang Go语言中 用过 go-playground/validator 的老哥麻烦进来下
最近在研究 gin 框架 用到参数验证器 发现真的难用
我在验证传参的时候 只能验证大写的变量
请问:怎样才能验证以小写字母开头的变量
传小写变量:
2019/08/29 17:45:48 [P 为必填字段 N 为必填字段]
[GIN] 2019/08/29 - 17:45:48 | 200 | 1.995798ms | 192.168.5.21 | GET /v1/api/test/test_users?p=1&n=15
获取不到传入的待验证参数:
2019/08/29 17:45:48 [P 为必填字段 N 为必填字段]
如果传:
注意是大写的 P
和 N
就正常啦 可以通过验证
[GET] /v1/api/test/test_users?P=1&N=15
附上代码:
用了中间件去加载验证器及验证翻译包
import (
"gin-test/common"
"github.com/gin-gonic/gin"
ut "github.com/go-playground/universal-translator"
"gopkg.in/go-playground/validator.v9"
"log"
)
type Page struct {
P uint json:"p" validate:"required,min=1"
N uint json:"n" validate:"required,min=1"
}
// GetPage get page parameters
func GetPage(c *gin.Context) (int, int) {
currentPage := 0
v, _ := c.Get("trans")
trans, ok := v.(ut.Translator)
if !ok {
trans, _ = common.Uni.GetTranslator("zh")
}
var p Page
if err := c.ShouldBindQuery(&p); err != nil {
log.Println(err)
}
err := common.Validate.Struct(p)
if err != nil {
errs := err.(validator.ValidationErrors)
var sliceErrs [] string
for _, e := range errs {
sliceErrs = append(sliceErrs, e.Translate(trans))
}
log.Println(sliceErrs)
}
//if page > 0 {
// currentPage = (page - 1) * limit
//}
return currentPage, 0
}
更多关于Golang Go语言中 用过 go-playground/validator 的老哥麻烦进来下的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
不传大写的人家外面咋调用哇
更多关于Golang Go语言中 用过 go-playground/validator 的老哥麻烦进来下的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
你把 p 结构体打出来,看是不是没 bind 上数据,validate 是验证结构体里的数据的
试试 form
go<br>type Page struct {<br> P uint `json:"p" form:"p" validate:"required,min=1"`<br> N uint `json:"n" form:"n" validate:"required,min=1"`<br>}<br>
[https://github.com/gin-gonic/gin#only-bind-query-string]( https://github.com/gin-gonic/gin#only-bind-query-string)
#3
感谢老哥 加上 form:"p"
就能获取到了
看来还要多看文档
关于Go语言中go-playground/validator的使用,以下是一些关键信息和示例:
go-playground/validator是Go语言中的一个非常流行的数据验证库,它提供了丰富的验证功能,并支持通过结构体标签(struct tags)定义验证规则,使得数据验证变得简单而直观。
要使用这个库,首先需要通过go get github.com/go-playground/validator/v10
命令进行安装。安装完成后,可以在代码中通过import语句引入该库。
以下是一个简单的使用示例:
package main
import (
"fmt"
"github.com/go-playground/validator/v10"
)
type User struct {
Name string `validate:"required"`
Email string `validate:"required,email"`
Age int `validate:"gte=0,lte=130"`
}
func main() {
validate := validator.New()
user := &User{Name: "John Doe", Email: "john.doe@example.com", Age: 30}
err := validate.Struct(user)
if err != nil {
fmt.Println("Validation failed:", err)
} else {
fmt.Println("Validation passed")
}
}
此外,go-playground/validator还支持跨字段验证、自定义验证函数、错误消息国际化等高级功能。这些功能可以大大提高数据验证的灵活性和可维护性。如需更多信息,建议查阅官方文档或相关教程。