gpt4 book ai didi

http - 如何为 Golang HTTP 请求发送嵌套 header

转载 作者:数据小太阳 更新时间:2023-10-29 03:44:21 25 4
gpt4 key购买 nike

我在 Ruby 中有一个像下面这样的旧脚本,我想在 Golang 中复制它

RestClient::Request.execute(
url: "myurl",
method: :put,
headers: {
params: {
foo: 'bar'
}
})

这是我目前在 Golang 中的内容:

req, _ := http.NewRequest("PUT", url, nil)
req.Header.Add("params", "{\"foo\": \"bar\"}")
client := &http.Client{}
rsp, err = client.Do(req)

这不起作用,但我不确定该怎么做。我是否需要以不同方式设置该字符串的格式?

请求的 header 是:

map[Accept:[*/*] Accept-Encoding:[gzip, deflate] User-Agent:[rest-client/2.0.2 (my_pc x86_64) ruby/2.4.2p198] Content-Length:[0] Content-Type:[application/x-www-form-urlencoded]]

请求转储(使用 httputil.DumpRequest)是:

PUT /my_path?foo=bar HTTP/1.1
Host: localhost:8080
Accept: */*
Accept-Encoding: gzip, deflate
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
User-Agent: rest-client/2.0.2 (my_pc) ruby/2.4.2p198

看起来我只需要将信息作为查询参数放在路径中。除非还有其他我应该检查的东西。内容长度为 0,因此也没有正文。

最佳答案

我刚刚运行了您的 Ruby 代码,发现它实际上并没有发送任何 header ,而是向您的请求添加了查询参数:

PUT /?foo=bar HTTP/1.1
Accept: */*; q=0.5, application/xml
Accept-Encoding: gzip, deflate
User-Agent: Ruby
Host: localhost:8080

因此您可以使用此代码在 Go 中重现它:

req, _ := http.NewRequest("PUT", url, strings.NewReader(`{"foo": "bar"}`))
client := &http.Client{}
rsp, err = client.Do(req)

关于http - 如何为 Golang HTTP 请求发送嵌套 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51050415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com