http.Transport类型


> ```go
> type Transport struct {
>     idleMu sync.Mutex
>     wantIdle bool
>     idleConn map[connectMethodKey][]*persistConn
>     idleConnCh map[connectMethodKey]chan *persistConn
>     idleLRU connLRU
>     reqMu sync.Mutex
>     reqCanceler map[*Request]func(error)
>     altMu sync.Mutex
>     altProto atomic.Value
>     Proxy func(*Request) (*url.URL, error)
>     DialContext func(ctx context.Context, network, addr string) (net.Conn, error)
>     Dial func(network, addr string) (net.Conn, error)
>     DialTLS func(network, addr string) (net.Conn, error)
>     TLSClientConfig *tls.Config
>     TLSHandshakeTimeout time.Duration
>     DisableKeepAlives bool
>     DisableCompression bool
>     MaxIdleConns int
>     MaxIdleConnsPerHost int
>     IdleConnTimeout time.Duration
>     ResponseHeaderTimeout time.Duration
>     ExpectContinueTimeout time.Duration
>     TLSNextProto map[string]func(authority string, c *tls.Conn) RoundTripper
>     ProxyConnectHeader Header
>     MaxResponseHeaderBytes int64
>     nextProtoOnce sync.Once
>     h2transport *http2Transport
> }
>

如您所见,http.Transport是一个包含大量字段的复杂结构。好消息是在编写HTTP相关程序时,并不需要经常使用http.Transport结构,并且在使用时不需要处理它的所有字段。

http.Transport结构实现了http.RoundTripper接口,并且支持HTTP、HTTPS和HTTP代理的模式。不过http.Transport是一个低级别的结构,本章中使用的http.Client结构则是一个高级别的HTTP客户端实现。

最后编辑: kuteng  文档更新时间: 2021-03-27 20:14   作者:kuteng