为了账号安全,请及时绑定邮箱和手机立即绑定

go - 如何获取请求消息正文内容?

go - 如何获取请求消息正文内容?

Go
犯罪嫌疑人X 2021-12-27 18:23:48
我的客户端代码向服务器发送 AJAX 请求,其中包含一条消息我如何从该请求消息正文中读取数据。在 NodeJS 的 Express 中,我使用了这个:    app.post('/api/on', auth.isLoggedIn, function(req, res){                res.setHeader('Access-Control-Allow-Origin', '*');                res.setHeader('Access-Control-Allow-Methods', 'POST');                res.setHeader('Access-Control-Allow-Headers', 'Content-Type');                var url = req.body.url;                // Later process}url = req.body.urlGo 中的等价物是什么?
查看完整描述

2 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

如果请求正文是 URL 编码的,则使用r.FormValue("url")从请求中获取“url”值。


如果请求正文是 JSON,则使用JSON 解码器将请求正文解析为键入的值以匹配 JSON 的形状。


var data struct {

   URL string

}

if err := json.NewDecoder(r.Body).Decode(&data); err != nil {

    // handle error

}

// data.URL is "url" member of the posted JSON object.


查看完整回答
反对 回复 2021-12-27
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

是一个简单的 http 处理程序示例:

package main


import (

    "bytes"

    "encoding/json"

    "fmt"

    "io/ioutil"

    "net/http"

)


func main() {

    http.HandleFunc("/", Handler)

    http.ListenAndServe(":8080", nil)

    // Running in playground will fail but this will start a server locally

}


type Payload struct {

    ArbitraryValue string `json:"arbitrary"`

    AnotherInt     int    `json:"another"`

}


func Handler(w http.ResponseWriter, r *http.Request) {

    body, err := ioutil.ReadAll(r.Body)

    if err != nil {

        http.Error(w, err.Error(), http.StatusInternalServerError)

        return

    }


    url := r.URL

    // Do something with Request URL

    fmt.Fprintf(w, "The URL is %q", url)


    payload := Payload{}

    err = json.NewDecoder(bytes.NewReader(body)).Decode(&payload)

    if err != nil {

        http.Error(w, err.Error(), http.StatusInternalServerError)

        return

    }

    // Do something with payload


}


查看完整回答
反对 回复 2021-12-27
  • 2 回答
  • 0 关注
  • 238 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信