Skip to content

Repository files navigation

github.com/gobuffalo/validate

Build StatusActions StatusGoDoc

This package provides a framework for writing validations for Go applications. It does provide you with few validators, but if you need others you can easly build them.

Installation

$ go get github.com/gobuffalo/validate

Usage

Using validate is pretty easy, just define some Validator objects and away you go.

Here is a pretty simple example:

package main
import (
"log"
v "github.com/gobuffalo/validate"
)
typeUserstruct {
NamestringEmailstring
}
func (u*User) IsValid(errors*v.Errors) {
ifu.Name=="" {
errors.Add("name", "Name must not be blank!")
}
ifu.Email=="" {
errors.Add("email", "Email must not be blank!")
}
}
funcmain() {
u:=User{Name: "", Email: ""}
errors:=v.Validate(&u)
log.Println(errors.Errors)
// map[name:[Name must not be blank!] email:[Email must not be blank!]]
}

In the previous example I wrote a single Validator for the User struct. To really get the benefit of using go-validator, as well as the Go language, I would recommend creating distinct validators for each thing you want to validate, that way they can be run concurrently.

package main
import (
"fmt""log""strings"
v "github.com/gobuffalo/validate"
)
typeUserstruct {
NamestringEmailstring
}
typePresenceValidatorstruct {
FieldstringValuestring
}
func (v*PresenceValidator) IsValid(errors*v.Errors) {
ifv.Value=="" {
errors.Add(strings.ToLower(v.Field), fmt.Sprintf("%s must not be blank!", v.Field))
}
}
funcmain() {
u:=User{Name: "", Email: ""}
errors:=v.Validate(&PresenceValidator{"Email", u.Email}, &PresenceValidator{"Name", u.Name})
log.Println(errors.Errors)
// map[name:[Name must not be blank!] email:[Email must not be blank!]]
}

That's really it. Pretty simple and straight-forward Just a nice clean framework for writing your own validators. Use in good health.

Built-in Validators

To make it even simpler, this package has a children package with some nice built-in validators.

package main
import (
"log""github.com/gobuffalo/validate""github.com/gobuffalo/validate/validators"
)
typeUserstruct {
NamestringEmailstring
}
funcmain() {
u:=User{Name: "", Email: ""}
errors:=validate.Validate(
&validators.EmailIsPresent{Name: "Email", Field: u.Email, Message: "Mail is not in the right format."},
&validators.StringIsPresent{Field: u.Name, Name: "Name"},
)
log.Println(errors.Errors)
// map[name:[Name can not be blank.] email:[Mail is not in the right format.]]
}

All fields are required for each validators, except Message (every validator has a default error message).

Available Validators

A full list of available validators can be found at https://pkg.go.dev/github.com/gobuffalo/validate/v3/validators.

About

This package provides a framework for writing validations for Go applications.

Topics

Resources

Code of conduct

Contributing

Stars

94 stars

Watchers

6 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages