Jadi saya memiliki yang berikut ini, yang tampaknya sangat tidak rapi, dan saya telah berpikir pada diri saya sendiri bahwa Go memiliki perpustakaan yang dirancang lebih baik daripada ini, tetapi saya tidak dapat menemukan contoh Go menangani permintaan POST data JSON. Mereka semua membentuk POST.
Berikut ini contoh permintaan: curl -X POST -d "{\"test\": \"that\"}" http://localhost:8082/test
Dan ini kodenya, dengan log yang disematkan:
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))
}
Pasti ada cara yang lebih baik, bukan? Saya hanya bingung menemukan apa yang bisa menjadi praktik terbaik.
(Go juga dikenal sebagai Golang ke mesin pencari, dan disebutkan di sini sehingga orang lain dapat menemukannya.)
curl -X POST -H 'Content-Type: application/json' -d "{\"test\": \"that\"}"
, makareq.Form["test"]
harus kembali"that"