我很难理解Go中需要RoundTripper
的内容。
https://golang.org/pkg/net/http/#RoundTripper
解释Go中的默认Transport
:
var DefaultTransport RoundTripper = &Transport{
Proxy: ProxyFromEnvironment,
Dial: (&net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
}).Dial,
TLSHandshakeTimeout: 10 * time.Second,
}
但RoundTripper
与此之间的区别是什么:
transport := &http.Transport{
Proxy: http.ProxyFromEnvironment,
TLSHandshakeTimeout: timeout,
Dial: dialfunc,
DisableKeepAlives: true,
}
我的问题:RoundTripper
与常规Transport
不同吗?
答案 0 :(得分:9)
我认为沃尔克在对你的问题的评论中做得对。从我的角度来看,http.Transport
提供了http.RoundTripper
的实现,但只要它实现RoundTrip()
,您就可以提供完全不同的实现。
许多人已经将此作为添加速率限制的方式(即它们提供了可能使用http.Transport
的实现,但它们增加了限制程序发送速率的能力或收到字节)。