1 回答

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可能應(yīng)該使用net/url包構(gòu)建 URL 和查詢。這樣做的好處是更安全。
params := url.Values{
"page[size]": []string{"100"},
"page[" + key + "]": []string{"1"},
}
u := &url.URL{
Scheme: "https",
Host: "url.com",
Path: "/path",
RawQuery: params.Encode(),
}
req, err := http.NewRequest("GET", u.String(), nil)
嘗試使用fmt.Sprintf()構(gòu)造 URL 更有可能適得其反。
如果要使用 構(gòu)造 URL fmt.Sprintf,則需要轉(zhuǎn)義%格式字符串中的所有 ,并轉(zhuǎn)義參數(shù)中的特殊字符。
fmt.Sprint("https://url.com/path?&page%%5Bsize%%5D=100&page%%5B%s%%5D=1",
url.QueryEscape(key))
該url.QueryEscape()函數(shù)對(duì)字符串中的字符進(jìn)行轉(zhuǎn)義,以便可以安全地將其放置在 URL 查詢中。如果您使用url.Values和構(gòu)造 URL,則沒有必要url.URL。
- 1 回答
- 0 關(guān)注
- 123 瀏覽
添加回答
舉報(bào)