Commit b16c21ed authored by shajiaming's avatar shajiaming

验证

parent 0d23e4b4
package validate_service
import (
"gopkg.in/go-playground/validator.v9"
"reflect"
"strings"
)
func ValidateInputs(dataSet interface{}) (bool, map[string][]string) {
validate := validator.New()
err := validate.Struct(dataSet)
if err != nil {
//Validation syntax is invalid
if err, ok := err.(*validator.InvalidValidationError); ok {
panic(err)
}
//Validation errors occurred
errors := make(map[string][]string)
//Use reflector to reverse engineer struct
reflected := reflect.ValueOf(dataSet)
for _, err := range err.(validator.ValidationErrors) {
// Attempt to find field by name and get json tag name
field, _ := reflected.Type().FieldByName(err.StructField())
var name string
//If json tag doesn't exist, use lower case of name
if name = field.Tag.Get("json"); name == "" {
name = strings.ToLower(err.StructField())
}
switch err.Tag() {
case "required":
errors[name] = append(errors[name], "The "+name+" is required")
break
case "email":
errors[name] = append(errors[name], "The "+name+" should be a valid email")
break
case "url":
errors[name] = append(errors[name], "The "+name+" should be a valid url")
break
case "eqfield":
errors[name] = append(errors[name], "The "+name+" should be equal to the "+err.Param())
break
default:
errors[name] = append(errors[name], "The "+name+" is invalid")
break
}
}
return false, errors
}
return true, nil
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment