如何在golang中生成查询字符串?
How to generate query string in golang?
在我的用例中,我需要 post 数据到 url,但是数据本身是一个查询字符串。
示例:
curl -POST -d "username=abc&rememberme=on&authtype=intenal" "https..somemdpoint"
我有一个方法,它接受 3 个值
function makePostRequest(username string, rememberme string, authtype string, endpoint string) {
// post a curl request.
}
我正在努力寻找任何库 return 如果我为它提供参数,我会得到一个查询字符串。
我试过这样做:
q := req.URL.Query()
q.Add("api_key", "key_from_environment_or_flag")
q.Add("another_thing", "foobar")
fmt.Print(q)
但实际上 returns Values 是一张地图,所以它不好。
golang 中有创建 queryString 的方法吗?
你差不多明白了。调用 Values.Encode()
以 URL 编码形式对地图进行编码。
fmt.Print(q.Encode()) // another_thing=foobar&api_key=key_from_environment_or_flag
直接创建地图而不是使用req.URL.Query()
到return空地图:
values := url.Values{}
values.Add("api_key", "key_from_environment_or_flag")
values.Add("another_thing", "foobar")
query := values.Encode()
使用 strings.NewReader(query)
为 POST 请求正文获取 io.Reader
。
在我的用例中,我需要 post 数据到 url,但是数据本身是一个查询字符串。 示例:
curl -POST -d "username=abc&rememberme=on&authtype=intenal" "https..somemdpoint"
我有一个方法,它接受 3 个值
function makePostRequest(username string, rememberme string, authtype string, endpoint string) {
// post a curl request.
}
我正在努力寻找任何库 return 如果我为它提供参数,我会得到一个查询字符串。
我试过这样做:
q := req.URL.Query()
q.Add("api_key", "key_from_environment_or_flag")
q.Add("another_thing", "foobar")
fmt.Print(q)
但实际上 returns Values 是一张地图,所以它不好。
golang 中有创建 queryString 的方法吗?
你差不多明白了。调用 Values.Encode()
以 URL 编码形式对地图进行编码。
fmt.Print(q.Encode()) // another_thing=foobar&api_key=key_from_environment_or_flag
直接创建地图而不是使用req.URL.Query()
到return空地图:
values := url.Values{}
values.Add("api_key", "key_from_environment_or_flag")
values.Add("another_thing", "foobar")
query := values.Encode()
使用 strings.NewReader(query)
为 POST 请求正文获取 io.Reader
。