李伟乐 2 years ago
parent 170c4da08f
commit f7935ed963
  1. 8
      internal/httputil/http.go
  2. 10
      internal/httputil/http_test.go
  3. 2
      transport/http/codec.go

@ -1,6 +1,8 @@
package httputil
import "strings"
import (
"strings"
)
const (
baseContentType = "application"
@ -19,6 +21,10 @@ func ContentSubtype(contentType string) string {
if right == -1 {
right = len(contentType)
}
right1 := strings.Index(contentType, ",")
if right1 > 0 && right1 < right {
right = right1
}
if right < left {
return ""
}

@ -0,0 +1,10 @@
package httputil
import (
"fmt"
"testing"
)
func TestContentSubtype(t *testing.T) {
fmt.Println(ContentSubtype("application/json, text/plain, */*"))
}

@ -37,7 +37,6 @@ func DefaultRequestQuery(r *http.Request, v any) error {
return binding.BindQuery(r.URL.Query(), v)
}
func DefaultRequestDecoder(r *http.Request, v any) error {
fmt.Println("request decoder")
codec, ok := CodeForRequest(r, "Content-type")
if !ok {
return errors.BadRequest("CODEC", fmt.Sprintf("unregister Content-Type: %s", codec))
@ -89,7 +88,6 @@ func DefaultErrorEncoder(w http.ResponseWriter, r *http.Request, err error) {
func CodeForRequest(r *http.Request, name string) (encoding.Codec, bool) {
for _, accept := range r.Header[name] {
a := httputil.ContentSubtype(accept)
fmt.Println("aaa", name, a)
codec := encoding.GetCodec(a)
if codec != nil {
return codec, true

Loading…
Cancel
Save