Maison >développement back-end >Golang >Pourquoi ma réponse HTTP Go renvoie-t-elle un JSON vide avec un type de contenu texte/plain ?
Réponses HTTP avec JSON
Lors de la création de réponses HTTP avec JSON dans Go, il est nécessaire de s'assurer que les données sont correctement formatées. Un problème qui peut survenir est une réponse vide avec un type de texte/contenu brut. Cela indique souvent un problème avec l'encodage JSON ou la structure utilisée pour représenter les données.
Dans le cas décrit dans la question, le code fourni tente d'envoyer une réponse JSON en utilisant la structure suivante :
<code class="go">type ResponseCommands struct { key string value bool }</code>
Cependant, comme le souligne correctement la réponse, les variables de cette structure ne sont pas exportées, ce qui signifie qu'elles commencent par des lettres minuscules. Cela peut entraîner des problèmes avec l'encodage JSON, car les clés JSON doivent être exportées (commencez par des lettres majuscules).
Pour résoudre le problème, la structure doit être modifiée pour exporter les variables :
<code class="go">type ResponseCommands struct { Key string Value bool }</code>
De plus, il est essentiel de s'assurer que l'en-tête Content-Type est défini sur application/json avant d'écrire les données de réponse. Le code suivant met à jour la fonction de gestionnaire pour inclure ce correctif :
<code class="go">func handler(rw http.ResponseWriter, req *http.Request) { responseBody := ResponseCommands{"BackOff", false} data, err := json.Marshal(responseBody) if err != nil { http.Error(rw, err.Error(), http.StatusInternalServerError) return } rw.WriteHeader(200) rw.Header().Set("Content-Type", "application/json") rw.Write(data) }</code>
En apportant ces modifications, le code doit générer correctement une réponse JSON avec le type de contenu approprié.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!