动态

详情 返回 返回

Go http.Transport 主要參數説明 - 动态 详情

圖片
在 Go 中創建一個 http client 時,一般會使用 Go http 包的 Transport 類型。本文主要説明 http.Transport 需要關注的主要參數。http.Transport 類型説明http.Transport 主要參數DefaultTransport 配置DialContext 簡單示例Referencehttp.Transport 類型説明首先我們要明確的是,我們開發 http client 的時候,經常會這麼寫:client := &http.Client{

Transport: http.DefaultTransport,

}但細看可以發現,http.Client 的 Transport 成員類型是 http.RoundTripper,而不是 http.Transport 類型。換句話説,開發者完全可以拋棄原生的實現,自己定製一份 http.RoundTripper 接口來實現一個完整的 http 調用。不過這不在本文説明範圍內。http.Transport 主要參數該類型通過一系列的參數來決定其行為。請注意的是,同樣數據類型的不同參數,其表達的默認值是不同的。參數作用默認值連接控制類Proxy指定使用 http 代理。這裏推薦傳入 http.ProxyFromEnvironment, 以支持系統配置的 http 代理nil,表示 不使用 任何代理,請注意DialContextTCP 連接函數。開發者可以簡單封裝一下,一般可以用來做一些監控或者特殊的地址解析邏輯nil, 使用默認的 http 連接超時控制類TLSHandShakeTimeouttime.Duration 類型,表示TLS 握手超時時間。這裏推薦傳入一個非零值0, 表示無限制IdleConnTimeouttime.Duration 類型,表示一個連接在空閒多久之後關閉。0, 表示不關閉連接數控制類MaxIdleConns最大空閒連接數0, 表示無限制MaxIdleConnsPerHost每一個 host 的最大連接數http.DefaultMaxIdleConnsPerHost,即 2緩衝區類WriteBufferSize寫緩衝區的大小4kBReadBufferSize讀緩衝區的大小4kB其他ForceAttemptHTTP2字面意思,是否強制嘗試 HTTP2。建議設置為 truefalse, 不嘗試DefaultTransport 配置http.DefaultTransport 是基於 http.Transport 實現的,其配置説明如下:參數值Proxyhttp.ProxyFromEnvironment 即 follow 系統配置DialContextnet.Dialer 類型的 DialContext 方法TLSHandShakeTimeout10 秒IdleConnTimeout90 秒MaxIdleConns100MaxIdleConnsPerHosthttp.DefaultMaxIdleConnsPerHost,即 2WriteBufferSize4kBReadBufferSize4kBForceAttemptHTTP2trueDialContext 簡單示例func dialContext(ctx context.Context, network, addr string) (net.Conn, error) {

// 注: 這裏無視了 ctx 的超時, 實際上應該加上
log.Debugf("request connecting %v, %v", network, addr)

tcpAddr, err := net.ResolveTCPAddr(network, addr)
if err != nil {
    return nil, fmt.Errorf("resolve %s failed: %w", addr, err)
}

conn, err := net.DialTCP(network, nil, tcpAddr)
if err != nil {
    return nil, fmt.Errorf("connect to %v failed: %w", tcpAddr, err)
}

return conn, nil

}Reference官方文檔Golang TCP server and Client ExampleCreate a TCP anf UDP Client and Server using Go本文章採用 知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議 進行許可。原作者: amc,原文發佈於雲+社區,也是本人的博客。歡迎轉載,但請註明出處。原作者: amc,歡迎轉載,但請註明出處。原文標題:《Go http.Transport 主要參數説明》

user avatar shuyuanutil 头像 tizuqiudehongcha 头像
点赞 2 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.