Go と http.Transport を HTTP/2 トランスポートに使用するにはどうすればよいですか?
HTTP/2 は、より高速な転送速度とより効率的な帯域幅利用を提供する新しい HTTP プロトコル バージョンです。 Go 言語には HTTP/2 のサポートが付属しており、HTTP/2 送信は http.Transport パッケージを通じて簡単に実行できます。この記事では、HTTP/2 トランスポートに Go と http.Transport を使用する方法を説明し、いくつかのコード例を示します。
まず、net/http
と golang.org/x/net/http2 をインポートする必要があります。
これら 2 つのパッケージ。 net/http
パッケージは HTTP クライアントとサーバーの機能を提供し、golang.org/x/net/http2
パッケージは HTTP/2 のサポートを提供します。
import ( "net/http" "golang.org/x/net/http2" )
次に、HTTP クライアントを作成する必要があります。これは、いくつかの http.Transport オプションを設定できる http.Client
構造を使用して実現できます。
client := &http.Client{ Transport: &http2.Transport{}, }
ここでは http2.Transport を Transport のインスタンスとして使用し、HTTP/2 送信を有効にします。
作成した HTTP クライアントを使用して、HTTP リクエストを送信できます。ここでは例として GET リクエストを取り上げ、返されたレスポンスをコンソールに出力します。
resp, err := client.Get("https://example.com") if err != nil { panic(err) } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { panic(err) } fmt.Println(string(body))
この例では、client.Get
メソッドを使用して GET リクエストを送信し、応答を resp
変数に保存しました。次に、ioutil.ReadAll
メソッドを使用して応答本文をバイト スライスとして読み取り、文字列に変換してコンソールに出力します。
リクエストを送信する前に、追加のヘッダーを追加したり、他のオプションを設定したりできます。たとえば、次の方法でカスタム ヘッダーを添付できます:
req, err := http.NewRequest("GET", "https://example.com", nil) if err != nil { panic(err) } req.Header.Add("X-Custom-Header", "CustomValue") resp, err := client.Do(req) if err != nil { panic(err) } defer resp.Body.Close() // 处理响应...
この例では、まず http.NewRequest
メソッドを使用して GET リクエストを作成し、カスタム ヘッダーを添付します。ヘッダ。次に、client.Do
メソッドを使用してリクエストを送信し、以前と同じ方法で応答を処理します。
テスト環境または開発環境では、サーバー証明書の検証をスキップする必要がある場合があります。これは、http2.Transport
の TLSClientConfig
フィールドを通じて実現できます。例:
tr := &http2.Transport{ TLSClientConfig: &tls.Config{ InsecureSkipVerify: true, }, } client := &http.Client{ Transport: tr, }
この例では、http2.Transport
インスタンスを作成し、TLSClientConfig
の InsecureSkipVerify
フィールドを # # に設定します。 #true、つまり、サーバー証明書の検証をスキップします。次に、この Transport インスタンスを HTTP クライアントに渡します。
以上がHTTP/2 トランスポートに Go と http.Transport を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。