如何在GET请求Golang中发送JSON正文?

时间:2020-07-23 15:06:22

标签: http go get payload

documentation中没有http.Client.Get

的“正文”字段。

2 个答案:

答案 0 :(得分:6)

HTTP不支持发送带有GET请求的正文。有关详细信息,请参见this Q&A。但是,即使您真的想这样做,即使您知道这是错误的,也可以这样进行:

iKnowThisBodyShouldBeIgnored := strings.NewReader("text that won't mean anything")
req, err := http.NewRequest(http.MethodGet, "http://example.com/foo", iKnowThisBodyShouldBeIgnored)
if err != nil {
    panic(err)
}
res, err := http.DefaultClient.Do(req)

答案 1 :(得分:3)

  1. 请勿在GET请求中发送正文:an explanation

    RFC 7331 says以下:

    GET请求消息中的有效载荷没有定义的语义; 在GET请求上发送有效内容正文可能会导致一些现有内容 拒绝请求的实现。

  2. 如果必须的话,请不要使用net/http.Get,因为它只是一种便利功能。
    相反,请更深入一层并构建适当的http.Request,然后通过在Do的实例上调用http.Client方法来执行(http.DefaultClient应该就可以了)。 / p>