In Go, you can use the Transport interface to customize HTTP requests. The specific steps are as follows: implement the RoundTrip method and specify custom behavior (add headers, connection restrictions, etc.); create a custom transport and implement the RoundTrip method; create an HTTP client using the custom transport; send a request and process the response.
Introduction
In Go,# The ##net/http package provides a standard set of HTTP client and server types. However, sometimes you may need more granular control over HTTP requests. At this time, you can use the
Transport interface to build a custom HTTP transport mechanism.
Transport interface
Transport The interface defines the methods required to perform and transmit HTTP requests:
type Transport interface { RoundTrip(*Request) (*Response, error) }
method is responsible for executing the HTTP request and returning the response to the caller.
Custom Transport
To create a custom Transport, you need to implement theRoundTrip method. In this method, you can specify custom behavior for the request, for example:
Practical case: Adding a custom header
Let us use a practical case to illustrate how to use Transport to add Custom header:Code
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() // 关闭响应体 }
Output
When you run this code you will get in the console See the content of the HTTP request with custom headers.GET https://example.com/ HTTP/1.1 Host: example.com User-Agent: Go-http-client/1.1 X-Custom-Header: custom-value ...
The above is the detailed content of How to use Transport to customize HTTP requests in Golang?. For more information, please follow other related articles on the PHP Chinese website!