Ich habe also Folgendes, was unglaublich hackig erscheint, und ich habe mir gedacht, dass Go besser gestaltete Bibliotheken als diese hat, aber ich kann kein Beispiel für Go finden, das eine POST-Anforderung von JSON-Daten verarbeitet. Sie sind alle Form POSTs.
Hier ist eine Beispielanfrage: curl -X POST -d "{\"test\": \"that\"}" http://localhost:8082/test
Und hier ist der Code mit den eingebetteten Protokollen:
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))
}
Es muss einen besseren Weg geben, oder? Ich bin nur ratlos darüber, was die beste Praxis sein könnte.
(Go ist in den Suchmaschinen auch als Golang bekannt und wird hier erwähnt, damit andere es finden können.)
curl -X POST -H 'Content-Type: application/json' -d "{\"test\": \"that\"}"
, dannreq.Form["test"]
sollte zurückkehren"that"