validation

package
v0.7.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 15, 2022 License: Apache-2.0 Imports: 10 Imported by: 0

README

[English|中文]

Validation

customer validator

  1. Tag name

After adding a tag to the structure and registering the validator of the corresponding name, the corresponding validation can be performed example: tag lt3

type Expmaple struct {
    Case string `validate:"lt3"`
}
  1. Validation func

example: lt3

func lt3(fl validator.FieldLevel) bool {
    field := fl.Field().String()
    return len(field) < 3
}

  1. Translation func

The translation method is mainly to return the error message of the specified language after the validation fails.(For example, Chinese needs to cooperate with the methodTranslate2Chinese)

example:

func translateLT3Err(ut ut.Translator, fe validator.FieldError) string {
    return "字符长度超过 3"
}
  1. Register validator

Add your custom validation here.

func RegisterCustomValidators() {
    appendMultiTagValidation(
        // Add your custom Validation here.
        Validation{
            validateFunc:     validateCharacterTypeGT3,
            translateFunc:    translateCharacterErr,
            translateRegFunc: defaultTranslateRegFunc,
            tag:              CharTypeGT3,
        },
        Validation{
            validateFunc:     lt3,
            translateFunc:    translateCharacterErr,
            translateRegFunc: translateLT3Err,
            tag:              "lt3",
        },
    )
}
  1. Use directly

example:

type ValidateCase struct {
    Name string `validate:"lt3"`
}

func main() {
    v := validator.New()
    RegisterCustomValidators()
    err := RegisterValidators(v)
    c := ValidateCase{Name: "1234"}
    err := v.Struct(c)
    fmt.Println(Translate2Chinese(err))
}

字符长度超过 3

  1. Validation in gin
type validateCase struct {
    Name string `form:"name" binding:"required,lt3" json:"name"`
}

func main() {
    middleware.Init()
    if v, ok := binding.Validator.Engine().(*validator.Validate); ok {
        err := validation.RegisterValidators(v)
        if err != nil {
        ...
        }
    }
}

// GET
func Getxx(ctx *gin.Context) {
    c := validateCase{}
    err := ctx.ShouldBindWith(&c, binding.Query)
    if err == nil {
    //"validate failed"
    }
}

// POST
func PostXXX(ctx *gin.Context) {
    c := validateCase{}
    err := ctx.ShouldBindJSON(&c)
    if err == nil {
    //"validate failed"
    }
}

Documentation

Index

Constants

View Source
const (
	CharTypeGT3         = "charTypeGT3"
	CharTypeGT3TransErr = "必须同时包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号)"
)

Variables

This section is empty.

Functions

func RegisterCustomValidators

func RegisterCustomValidators()

func RegisterValidators

func RegisterValidators(v *validator.Validate) error

func Translate2Chinese

func Translate2Chinese(err error) string

Types

type TagValidatorMap

type TagValidatorMap map[string]Validation

type Validation

type Validation struct {
	// contains filtered or unexported fields
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL