-
-
Notifications
You must be signed in to change notification settings - Fork 3.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
I am planning to implement Auto Validation #4199
Comments
reference: func init() {
uni := ut.New(zh.New())
trans, _ := uni.GetTranslator("zh")
v := validator.New()
logx.Must(zh_translations.RegisterDefaultTranslations(v, trans))
httpx.SetValidator(&validate{validate: v})
}
type validate struct {
validate *validator.Validate
}
func (v *validate) Validate(r *http.Request, data any) error {
return v.validate.StructCtx(r.Context(), data)
} |
Is the code you provided a suggestion for implementation? I noticed that there are two interface: // [email protected]/rest/httpx/requests.go
// Validator defines the interface for validating the request.
type Validator interface {
// Validate validates the request and parsed data.
Validate(r *http.Request, data any) error
} // [email protected]/core/validation/validator.go
// Validator represents a validator.
type Validator interface {
// Validate validates the value.
Validate() error
} I’m curious about why there are two different interfaces. Could you please explain? |
Yes, just choose one of the two. go-zero/rest/httpx/requests.go Lines 55 to 59 in 01bbc78
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Related issue(but stale): #3167
I am planning to implement such feature.
Is your feature request related to a problem? Please describe.
Current auto validation rules is not enough.
Describe the solution you'd like
Imitating Gin's validator implementation.
There is a tag "binding", once you add that tag to the struct, when you call
Bind()
-like function(in go-zero, it ishttpx.Parse()
), it will automatically validate the struct's fields.Gin underlying using the go-playground's validator, it has many validation rules, and also support custom validation rule.
Describe alternatives you've considered
Currently I have no alternatives for auto validation
Additional context
In Gin's implementation, the validation's interface has such function:
Validate(obj any) error
, and in go-zero, the validation interface's function isValidate() error
, I not sure which I should useThe text was updated successfully, but these errors were encountered: