回答

收藏

在 Go 中处理 JSON Post 请求

技术问答 技术问答 243 人阅读 | 0 人回复 | 2023-09-12

因此,我有以下内容,这似乎令人难以置信,我一直在想,Go 设计的库比这更好,但我找不到 Go 处理 JSON 数据的 POST 请求示例。它们都是表单 POST。$ K6 C4 L3 M$ z
这是一个示例请求: curl -X POST -d "{\"test\": \"that\"}" http://localhost:8082/test# z4 P8 Y% \8 u% ?& m4 g# ^- S( M( U9 L
这是嵌入日志的代码:
$ \4 p6 i# X4 C# X, s& ^( V
    package mainimport  "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))}
    3 P4 Z' k( h8 L8 ]
一定有更好的方法,对吧?我只是很难找到最好的实践。
/ [, q) K. W3 H2 n(Go 在搜索引擎中也被称为  Golang,以便别人能找到它。( \* N( W& E& y: T9 [. z
                                                                5 q  V7 T, w* i6 O$ w8 i# z" O5 c9 x
    解决方案:                                                                3 B/ y  a1 L8 e6 b' j! X
                                                                请使用json.Decoder代替json.Unmarshal。( Y: [0 I# {# J# H
    func test(rw http.ResponseWriter,req *http.Request)    decoder := json.NewDecoder(req.Body)    var t test_struct    err := decoder.Decode(&t)    if err != nil        panic(err)   }    log.Println(t.Test)}
    - p% A- b1 Q2 o3 b$ G
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则