fix(http): content type detection

This commit is contained in:
yusing 2025-05-04 16:18:46 +08:00
parent 797d88772f
commit e275ee634c

View file

@ -3,6 +3,7 @@ package gphttp
import ( import (
"mime" "mime"
"net/http" "net/http"
"strings"
) )
type ( type (
@ -33,13 +34,20 @@ func GetContentType(h http.Header) ContentType {
func GetAccept(h http.Header) AcceptContentType { func GetAccept(h http.Header) AcceptContentType {
var accepts []ContentType var accepts []ContentType
for _, v := range h["Accept"] { acceptHeader := h["Accept"]
if len(acceptHeader) == 1 {
acceptHeader = strings.Split(acceptHeader[0], ",")
}
for _, v := range acceptHeader {
ct, _, err := mime.ParseMediaType(v) ct, _, err := mime.ParseMediaType(v)
if err != nil { if err != nil {
continue continue
} }
accepts = append(accepts, ContentType(ct)) accepts = append(accepts, ContentType(ct))
} }
if len(accepts) == 0 {
return []ContentType{"*/*"}
}
return accepts return accepts
} }