Popularity
2.5
Growing
Activity
6.1
Declining
38
0
2

Programming language: Go
Tags: Validation    
Latest version: v2.0.0

gody alternatives and similar packages

Based on the "Validation" category

Do you think we are missing an alternative of gody or a related project?

Add another 'Validation' Package

README

gody

Mentioned in Awesome Go GoDoc Go Report Card Build Status Coverage Status GitHub release (latest by date)

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(vtr *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 validated, err := vtr.Validate(body); err != nil {
        ...                                                                                
    }
    })
}

func main() {
    validator := gody.NewValidator()

    rules := []gody.Rule{rule.NotEmpty, rule.Min}
    validator.AddRules(rules...)

    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

  1. At this time the only policy is don't create a Pull Request directly, it's necessary some discussions for some implementation then please open a issue before any thing to dicussion about the subject.