ดังนั้นฉันจึงมีสิ่งต่อไปนี้ซึ่งดูเหมือนว่าแฮ็คอย่างไม่น่าเชื่อและฉันคิดกับตัวเองว่า Go มีการออกแบบห้องสมุดที่ดีกว่านี้ แต่ฉันไม่พบตัวอย่างของ Go ที่จัดการคำขอ POST ของข้อมูล JSON พวกเขาทั้งหมดฟอร์ม POST
นี่คือตัวอย่างคำขอ: curl -X POST -d "{\"test\": \"that\"}" http://localhost:8082/test
และนี่คือรหัสโดยมีบันทึกฝังอยู่:
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))
}
จะต้องมีวิธีที่ดีกว่าใช่มั้ย ฉันแค่นิ่งงันในการค้นหาสิ่งที่ปฏิบัติที่ดีที่สุด
(Go เป็นที่รู้จักกันว่า Golang สำหรับเครื่องมือค้นหาและกล่าวถึงที่นี่เพื่อให้ผู้อื่นสามารถค้นหาได้)
curl -X POST -H 'Content-Type: application/json' -d "{\"test\": \"that\"}"
แล้วreq.Form["test"]
ควรกลับมา"that"