Go では、トランスポート インターフェイスを使用して HTTP リクエストをカスタマイズできます。具体的な手順は次のとおりです。 RoundTrip メソッドを実装し、カスタム動作を指定します (ヘッダー、接続制限など)。カスタム トランスポートを作成し、そのカスタム トランスポートを使用して HTTP クライアントを作成します。応答。
はじめに
Go では、net/http
パッケージは標準の HTTP クライアントとサーバーのタイプのセットを提供します。ただし、場合によっては、HTTP リクエストをより詳細に制御する必要があるかもしれません。現時点では、Transport
インターフェイスを使用してカスタム HTTP トランスポート メカニズムを構築できます。 net/http
包提供了一组标准的 HTTP 客户端和服务器类型。然而,有时你可能需要对 HTTP 请求进行更精细的控制。这时,你可以使用 Transport
接口来构建自定义的 HTTP 传输机制。
Transport 接口
Transport
接口定义了用于执行和传输 HTTP 请求所需的方法:
type Transport interface { RoundTrip(*Request) (*Response, error) }
其中:
RoundTrip
方法负责执行 HTTP 请求并将响应返回到调用者。自定义 Transport
要创建自定义的 Transport,你需要实现 RoundTrip
Transport
インターフェイスは、HTTP リクエストの実行と送信に必要なメソッドを定義します: import ( "context" "fmt" "net/http" "net/http/httputil" ) type CustomTransport struct { http.RoundTripper } func (t *CustomTransport) RoundTrip(req *http.Request) (*http.Response, error) { // 添加自定义标头 req.Header.Add("X-Custom-Header", "custom-value") // 执行请求 resp, err := t.RoundTripper.RoundTrip(req) if err != nil { return nil, err } // 打印带标头的请求内容 dump, _ := httputil.DumpRequest(req, true) fmt.Println(string(dump)) return resp, nil } func main() { // 创建自定义传输 transport := &CustomTransport{http.DefaultTransport} // 创建具有自定义传输的 HTTP 客户端 client := &http.Client{ Transport: transport, } // 发送请求 resp, err := client.Get("https://example.com") if err != nil { panic(err) } _ = resp.Body.Close() // 关闭响应体 }
RoundTrip
メソッドが実行を担当しますHTTP リクエストとレスポンスが呼び出し元に返されます。 カスタム トランスポート
カスタム トランスポートを作成するには、RoundTrip
メソッドを実装する必要があります。このメソッドでは、リクエストのカスタム動作を指定できます。例: カスタムヘッダーを追加する
接続制限を設定する プロキシサーバーを使用する
認証メカニズムを実装する
🎜🎜🎜実際のケース: 自己定義ヘッダーを追加する 🎜 🎜🎜 Transport を使用してカスタム ヘッダーを追加する方法を示す実際の例を見てみましょう: 🎜🎜🎜 コード 🎜🎜GET https://example.com/ HTTP/1.1 Host: example.com User-Agent: Go-http-client/1.1 X-Custom-Header: custom-value ...
以上がTransport を使用して Golang で HTTP リクエストをカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。