J'utilise Postman pour publier la chaîne json sur localhost. La chaîne de JSON Iam passant Postman est:Demander Body is null dans Go lang (Facteur)
{
“name”: "foo"
}
Cependant, lorsque je récupère les données dans ma fonction de test, le req.Body
i obtenir quelque chose comme ceci: &{%!s(*io.LimitedReader=&{0xc0820142a0 0}) <nil> %!s(*bufio.Reader=<nil>) %!s(bool=false) %!s(bool=true) {%!s(int32=0) %!s(uint32=0)} %!s(bool=true) %!s(bool=false) %!s(bool=false)}
Je souhaite obtenir le nom: foo dans le corps de la requête.
Mon go Code lang pour le même est:
import (
"encoding/json"
"fmt"
"net/http"
)
type Input struct {
Name string `json:"name"`
}
func test(rw http.ResponseWriter, req *http.Request) {
var t Input
json.NewDecoder(req.Body).Decode(&t)
fmt.Fprintf(rw, "%s\n", req.Body)
}
func main() {
http.HandleFunc("/test", test)
http.ListenAndServe(":8080", nil)
}
Quelqu'un peut-il me dire pourquoi je reçois des données vides dans l'attribut req.Body? Merci beaucoup.
Vous devez imprimer 't' pas 'req.Body' Et ** s'il vous plaît **: gérer chaque erreur – Volker
@Volker: J'ai essayé cela.Impression t me donne un' {} 'vide. ( –
Comment avez-vous imprimé 't'? Comme' "% s", t.name' ou '"% # v ", t'. Une sortie de" {} "semble étrange et gère toutes les erreurs – Volker