diff --git a/response/response.go b/response/response.go index a5e4f86..ddd02f6 100644 --- a/response/response.go +++ b/response/response.go @@ -21,12 +21,27 @@ func New(ctx *gin.Context) *result { func (s *result) BindQuery(v any) error { decoder := form.NewDecoder() decoder.SetTagName("json") - return decoder.Decode(v, s.ctx.Request.URL.Query()) + err := decoder.Decode(v, s.ctx.Request.URL.Query()) + if err != nil { + return err + } + return s.Validate(v) +} +func (s *result) Validate(v any) error { + if vv, ok := v.(interface { + Validate() error + }); ok { + return vv.Validate() + } + return nil } func (s *result) BindJSON(v any) error { body := s.ctx.Request.Body decoder := json.NewDecoder(body) - return decoder.Decode(v) + if err := decoder.Decode(v); err != nil { + return err + } + return s.Validate(v) } func (s *result) Error(err error) { if err == nil {