Então, eu tenho o seguinte, que parece incrivelmente hacky, e eu tenho pensado comigo mesmo que o Go tem bibliotecas projetadas melhor do que isso, mas não consigo encontrar um exemplo de Go manipulando uma solicitação POST de dados JSON. Todos são POSTs de formulário.
Aqui está um exemplo de solicitação: curl -X POST -d "{\"test\": \"that\"}" http://localhost:8082/test
E aqui está o código, com os logs incorporados:
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))
}
Tem que haver uma maneira melhor, certo? Estou perplexo ao descobrir qual poderia ser a melhor prática.
(Go também é conhecido como Golang para os mecanismos de pesquisa e mencionado aqui para que outros possam encontrá-lo.)
curl -X POST -H 'Content-Type: application/json' -d "{\"test\": \"that\"}"
, entãoreq.Form["test"]
deve retornar"that"