Así que tengo lo siguiente, que parece increíblemente hacky, y he estado pensando que Go tiene bibliotecas mejor diseñadas que esta, pero no puedo encontrar un ejemplo de Go manejando una solicitud POST de datos JSON. Todos son POST de forma.
Aquí hay un ejemplo de solicitud: curl -X POST -d "{\"test\": \"that\"}" http://localhost:8082/test
Y aquí está el código, con los registros incrustados:
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))
}
Tiene que haber una mejor manera, ¿verdad? Estoy perplejo al encontrar cuál podría ser la mejor práctica.
(Go también se conoce como Golang para los motores de búsqueda, y se menciona aquí para que otros puedan encontrarlo).
curl -X POST -H 'Content-Type: application/json' -d "{\"test\": \"that\"}"
, entoncesreq.Form["test"]
debería regresar"that"