gody alternatives and similar packages
Based on the "Validation" category.
Alternatively, view gody alternatives based on common mentions on social networks and blogs.
-
validator
:100:Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving -
ozzo-validation
An idiomatic Go (golang) validation package. Supports configurable and extensible validation rules (validators) using normal language constructs instead of error-prone struct tags. -
Validate
⚔ Go package for data validation and filtering. support Map, Struct, Form data. Go通用的数据验证与过滤库,使用简单,内置大部分常用验证、过滤器,支持自定义验证器、自定义消息、字段翻译。
InfluxDB - Purpose built for real-time analytics at any scale.
Do you think we are missing an alternative of gody or a related project?
README
gody
Go versions supported
Installation
go get github.com/guiferpa/gody/v2
Usage
package main
import (
"encoding/json"
"fmt"
"net/http"
gody "github.com/guiferpa/gody/v2"
"github.com/guiferpa/gody/v2/rule"
)
type RequestBody struct {
Name string `json:"name" validate:"not_empty"`
Age int `json:"age" validate:"min=21"`
}
func HTTPHandler(v *gody.Validator) http.HandlerFunc {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
var body RequestBody
if err := json.NewDecoder(r.Body).Decode(&body); err != nil {
...
}
defer r.Body.Close()
if isValidated, err := v.Validate(body); err != nil {
...
}
})
}
func main() {
validator := gody.NewValidator()
validator.AddRules(rule.NotEmpty, rule.Min)
port := ":3000"
http.ListenAndServe(port, HTTPHandler(validator))
}
Others ways for validation
There are others ways to valid a struct, take a look on functions below:
- RawValidate - It's a function that make validate with no rule, it's necessary put the struct for validation, some rule(s) and tag name.
gody.RawValidate(interface{}, string, []gody.Rule) (bool, error)
Validate - It's a function that make validate with no rule, it's necessary put the struct for validation and some rule(s).
gody.Validate(interface{}, []gody.Rule) (bool, error)
RawDefaultValidate - It's a function that already have built-in rules configured, it's necessary put the struct for validation, tag name and optional custom rule(s).
gody.RawDefaultValidate(interface{}, string, []gody.Rule) (bool, error)
DefaultValidate - It's a function that already have built-in rules configured, it's necessary put the struct for validation and optional custom rule(s).
gody.DefaultValidate(interface{}, []gody.Rule) (bool, error)
Contribution policies
- At this time the only policy is don't create a Pull Request directly, it's necessary some discussions for some implementation then open an issue before to dicussion anything about the project.