Vì vậy, tôi có những điều sau đây, có vẻ như rất khó tin và tôi đã tự nghĩ rằng Go có các thư viện được thiết kế tốt hơn thế này, nhưng tôi không thể tìm thấy một ví dụ về việc xử lý yêu cầu POST của dữ liệu JSON. Chúng đều là dạng POST.
Đây là một yêu cầu ví dụ: curl -X POST -d "{\"test\": \"that\"}" http://localhost:8082/test
Và đây là mã, với các bản ghi được nhúng:
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))
}
Có một cách tốt hơn, phải không? Tôi chỉ bối rối trong việc tìm kiếm những gì thực hành tốt nhất có thể.
(Go còn được gọi là Golang cho các công cụ tìm kiếm và được đề cập ở đây để những người khác có thể tìm thấy nó.)
curl -X POST -H 'Content-Type: application/json' -d "{\"test\": \"that\"}"
thìreq.Form["test"]
nên trả lại"that"