去RoundTripper和运输

时间:2014-11-03 04:50:25

标签: http go roundtrip itmstransporter

我很难理解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不同吗?

1 个答案:

答案 0 :(得分:9)

我认为沃尔克在对你的问题的评论中做得对。从我的角度来看,http.Transport提供了http.RoundTripper的实现,但只要它实现RoundTrip(),您就可以提供完全不同的实现。

许多人已经将此作为添加速率限制的方式(即它们提供了可能使用http.Transport的实现,但它们增加了限制程序发送速率的能力或收到字节)。