validator和translate的简介
- validator简介:验证器是一个可以对请求数据进行验证的工具,如果不符合我们验证器定义的验证规则就返回一定的信息。
- translator简介:翻译器是和验证器配合使用的,当我们验证不通过时,我们不能直接把后端的错误直接返回给前端页面,我们需要对错误信息进行一下翻译,让前端明白验证不通过的原因是什么,而不是直接抛出错误。
实现一个全局的validator和translator
- 第一步我们需要一个表单数据来让我们验证,这就是我们用来绑定接收请求数据的结构体类型
type PassWordLoginForm struct {
Mobile string `form:"mobile" json:"mobile" binding:"required"`
PassWord string `form:"password" json:"password" binding:"required,min=3,max=20"`
}
- 第二步我们通过valiator的engine()函数来实现配置我们的全局验证器和翻译器(这里其实gin的官方给了几个很好的例子,使用默认验证器)
import (
"fmt"
"github.com/gin-gonic/gin/binding"
"github.com/go-playground/locales/en"
"github.com/go-playground/locales/zh"
ut "github.com/go-playground/universal-translator"
"github.com/go-playground/validator/v10"
en_translations "github.com/go-playground/validator/v10/translations/en"
zh_translations "github.com/go-playground/validator/v10/translations/zh"
"reflect"
"strings"
)
func InitTrans(locale string) (err error) {
if v, ok := binding.Validator.Engine().(*validator.Validate); ok {
v.RegisterTagNameFunc(func(fld reflect.StructField) string {