modify default content type
This commit is contained in:
parent
d34ef94ad7
commit
472d175093
|
@ -3,6 +3,7 @@ package http
|
|||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt" // Added for fmt.Fprintf
|
||||
"net"
|
||||
"net/http"
|
||||
"time"
|
||||
|
@ -279,21 +280,37 @@ func writeResponse(w http.ResponseWriter, result any) {
|
|||
result = httpResp.Body // Set result to body for processing below
|
||||
}
|
||||
|
||||
switch res := result.(type) {
|
||||
case string:
|
||||
// String result - default to plain text
|
||||
setContentTypeIfMissing(w, contentTypePlain)
|
||||
w.Write([]byte(res))
|
||||
default:
|
||||
// All other types - convert to JSON
|
||||
// Check if it's a map (table) or array - return as JSON
|
||||
isJSON := false
|
||||
|
||||
switch result.(type) {
|
||||
case map[string]any, []any, []float64, []string, []int:
|
||||
isJSON = true
|
||||
}
|
||||
|
||||
if isJSON {
|
||||
setContentTypeIfMissing(w, contentTypeJSON)
|
||||
data, err := json.Marshal(res)
|
||||
data, err := json.Marshal(result)
|
||||
if err != nil {
|
||||
logger.Error("Failed to marshal response: %v", err)
|
||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
w.Write(data)
|
||||
return
|
||||
}
|
||||
|
||||
// All other types - convert to plain text
|
||||
setContentTypeIfMissing(w, contentTypePlain)
|
||||
|
||||
switch r := result.(type) {
|
||||
case string:
|
||||
w.Write([]byte(r))
|
||||
case []byte:
|
||||
w.Write(r)
|
||||
default:
|
||||
// Convert any other type to string
|
||||
fmt.Fprintf(w, "%v", r)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user