ホームページ >バックエンド開発 >Golang >Go の GET リクエストにクエリ文字列パラメータを効率的に追加するにはどうすればよいですか?

Go の GET リクエストにクエリ文字列パラメータを効率的に追加するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-21 16:54:15986ブラウズ

How to Efficiently Add Querystring Parameters to Go's GET Requests?

Go の GET リクエストのクエリ文字列パラメータ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。