J'ai donc ce qui suit, qui semble incroyablement hacky, et je me suis dit que Go a des bibliothèques mieux conçues que cela, mais je ne trouve pas d'exemple de Go traitant une demande POST de données JSON. Ce sont tous des POST.
Voici un exemple de demande: curl -X POST -d "{\"test\": \"that\"}" http://localhost:8082/test
Et voici le code, avec les journaux intégrés:
package main
import (
"encoding/json"
"log"
"net/http"
)
type test_struct struct {
Test string
}
func test(rw http.ResponseWriter, req *http.Request) {
req.ParseForm()
log.Println(req.Form)
//LOG: map[{"test": "that"}:[]]
var t test_struct
for key, _ := range req.Form {
log.Println(key)
//LOG: {"test": "that"}
err := json.Unmarshal([]byte(key), &t)
if err != nil {
log.Println(err.Error())
}
}
log.Println(t.Test)
//LOG: that
}
func main() {
http.HandleFunc("/test", test)
log.Fatal(http.ListenAndServe(":8082", nil))
}
Il doit y avoir un meilleur moyen, non? Je suis juste perplexe pour trouver quelle pourrait être la meilleure pratique.
(Go est également connu sous le nom de Golang pour les moteurs de recherche, et mentionné ici pour que d'autres puissent le trouver.)
curl -X POST -H 'Content-Type: application/json' -d "{\"test\": \"that\"}"
, alorsreq.Form["test"]
devrait revenir"that"