最近在研究 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
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.