在 Go 中,可以使用 http.Client 来实现发送带有查询字符串参数的 GET 请求。然而,这个任务可能并不像看起来那么简单。
要克服这个挑战,您可以利用 net/url 包。它的 Values 类型提供了一种构建查询字符串的便捷机制。考虑以下示例:
import ( "fmt" "log" "net/http" "os" "net/url" ) func main() { // Create a new request object with an initial URL. req, err := http.NewRequest("GET", "http://api.themoviedb.org/3/tv/popular", nil) if err != nil { log.Print(err) os.Exit(1) } // Get the existing query parameters from the request URL. q := req.URL.Query() // Add your querystring parameters to the `q` map. q.Add("api_key", "key_from_environment_or_flag") q.Add("another_thing", "foo & bar") // Encode the updated `q` map into a raw querystring and set it in the request. req.URL.RawQuery = q.Encode() // Retrieve the final URL with the querystring for debugging purposes. fmt.Println(req.URL.String()) // Output: // http://api.themoviedb.org/3/tv/popular?another_thing=foo+%26+bar&api_key=key_from_environment_or_flag }
此代码演示了如何动态构建查询字符串参数,而无需诉诸字符串连接。 url.Values 的 Encode 方法确保特殊字符被正确编码以便传输。
以上是如何高效地向 Go 的 GET 请求添加查询字符串参数?的详细内容。更多信息请关注PHP中文网其他相关文章!