Go RoundTripper и транспорт

мне трудно понять, что нам нужно RoundTripper Для в Go.

https://golang.org/pkg/net/http/#RoundTripper

объясняет значение по умолчанию Transport в Go:

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 ответов


Я думаю, Волкер понял это правильно в своем комментарии к вашему вопросу. С моей точки зрения, http.Transport обеспечивает реализацию http.RoundTripper, но вы можете предоставить свой собственный, который полностью отличается, если он реализует RoundTrip().

ряд людей использовали это как способ добавить ограничение скорости (т. е. они предоставляют реализацию, которая может использовать http.Transport под обложками, но они добавляют возможность ограничить скорость, с которой ваша программа отправляет или получает байты.)