2014-11-03 7 views
6

Ho difficoltà a capire cosa ci serve RoundTripper per in Go.Go RoundTripper and Transport

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

Spiega il default Transport in Go:

var DefaultTransport RoundTripper = &Transport{ 
     Proxy: ProxyFromEnvironment, 
     Dial: (&net.Dialer{ 
       Timeout: 30 * time.Second, 
       KeepAlive: 30 * time.Second, 
     }).Dial, 
     TLSHandshakeTimeout: 10 * time.Second, 
} 

Ma quale sarebbe la differenza tra RoundTripper e questo:

transport := &http.Transport{ 
    Proxy:     http.ProxyFromEnvironment, 
    TLSHandshakeTimeout: timeout, 
    Dial:    dialfunc, 
    DisableKeepAlives: true, 
} 

La mia domanda: è RoundTripper diverso rispetto alla normale Transport ?

+1

Volete sapere a cosa serve RoundTripper o volete sapere perché 'DefaultTransport' ha il tipo' RoundTripper'? Perché l'interfaccia 'RoundTripper' esiste per fare round trip. – nemo

+1

Voglio sapere che cosa RoundTripper è –

+5

Dalla documentazione: "RoundTripper è un'interfaccia che rappresenta la possibilità di eseguire una singola transazione HTTP, ottenendo la risposta per una determinata richiesta." Si trova tra le cose di basso livello come dialing, tcp, ecc. E i dettagli di alto livello di HTTP (reindirizzamenti, ecc.) RoundTrip è * il metodo * fa un singolo round trip della richiesta inviata al server, risposte del server con risposta . – Volker

risposta

5

Penso che Volker abbia capito bene nel suo commento sulla tua domanda. Dal mio punto di vista, http.Transport fornisce un'implementazione di http.RoundTripper, ma è possibile fornire il proprio che è completamente diverso, purché implementa RoundTrip().

Un numero di persone ha utilizzato questo come metodo per aggiungere la limitazione della velocità (ovvero forniscono un'implementazione che può utilizzare http.Transport sotto le copertine, ma aggiungono la possibilità di limitare la velocità con cui il programma invia o riceve byte) .

Problemi correlati