|
|
@ -37,6 +37,7 @@ func DefaultRequestQuery(r *http.Request, v any) error { |
|
|
|
return binding.BindQuery(r.URL.Query(), v) |
|
|
|
return binding.BindQuery(r.URL.Query(), v) |
|
|
|
} |
|
|
|
} |
|
|
|
func DefaultRequestDecoder(r *http.Request, v any) error { |
|
|
|
func DefaultRequestDecoder(r *http.Request, v any) error { |
|
|
|
|
|
|
|
fmt.Println("DefaultRequestDecoder") |
|
|
|
codec, ok := CodeForRequest(r, "Content-type") |
|
|
|
codec, ok := CodeForRequest(r, "Content-type") |
|
|
|
fmt.Println("request decoder", ok) |
|
|
|
fmt.Println("request decoder", ok) |
|
|
|
if !ok { |
|
|
|
if !ok { |
|
|
@ -56,7 +57,7 @@ func DefaultRequestDecoder(r *http.Request, v any) error { |
|
|
|
return nil |
|
|
|
return nil |
|
|
|
} |
|
|
|
} |
|
|
|
func DefaultResponseEncoder(w http.ResponseWriter, r *http.Request, v any) error { |
|
|
|
func DefaultResponseEncoder(w http.ResponseWriter, r *http.Request, v any) error { |
|
|
|
fmt.Println("response encode") |
|
|
|
fmt.Println("DefaultResponseEncoder") |
|
|
|
if v == nil { |
|
|
|
if v == nil { |
|
|
|
return nil |
|
|
|
return nil |
|
|
|
} |
|
|
|
} |
|
|
@ -75,6 +76,7 @@ func DefaultResponseEncoder(w http.ResponseWriter, r *http.Request, v any) error |
|
|
|
return err |
|
|
|
return err |
|
|
|
} |
|
|
|
} |
|
|
|
func DefaultErrorEncoder(w http.ResponseWriter, r *http.Request, err error) { |
|
|
|
func DefaultErrorEncoder(w http.ResponseWriter, r *http.Request, err error) { |
|
|
|
|
|
|
|
fmt.Println("DefaultErrorEncoder") |
|
|
|
se := errors.FromError(err) |
|
|
|
se := errors.FromError(err) |
|
|
|
codec, _ := CodeForRequest(r, "Accept") |
|
|
|
codec, _ := CodeForRequest(r, "Accept") |
|
|
|
body, err := codec.Marshal(se) |
|
|
|
body, err := codec.Marshal(se) |
|
|
@ -87,7 +89,6 @@ func DefaultErrorEncoder(w http.ResponseWriter, r *http.Request, err error) { |
|
|
|
_, _ = w.Write(body) |
|
|
|
_, _ = w.Write(body) |
|
|
|
} |
|
|
|
} |
|
|
|
func CodeForRequest(r *http.Request, name string) (encoding.Codec, bool) { |
|
|
|
func CodeForRequest(r *http.Request, name string) (encoding.Codec, bool) { |
|
|
|
fmt.Printf("rr%+v\n", r.Header) |
|
|
|
|
|
|
|
for _, accept := range r.Header[name] { |
|
|
|
for _, accept := range r.Header[name] { |
|
|
|
a := httputil.ContentSubtype(accept) |
|
|
|
a := httputil.ContentSubtype(accept) |
|
|
|
fmt.Println(name, a) |
|
|
|
fmt.Println(name, a) |
|
|
|