2014-11-03 5 views
6

이동 중에 RoundTripper이 필요한지 이해하는 데 어려움을 겪고 있습니다. 이동 RoundTripper 및 전송

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

은 이동의 기본 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, 
} 

내 질문은 : Transport 일반보다 더 RoundTripper 다른 ?

+1

'RoundTripper'가 무엇인지 알고 싶습니까? 아니면 'DefaultTransport'가'RoundTripper '유형을 갖고 있는지 알고 싶습니까? RoundTripper 인터페이스가 왕복을하기 위해 존재하기 때문입니다. – nemo

+1

RoundTripper가 무엇인지 알고 싶습니다. –

+5

문서에서 : "RoundTripper는 단일 HTTP 트랜잭션을 실행하고 주어진 요청에 대한 응답을 얻는 기능을 나타내는 인터페이스입니다." 그것은 전화 걸기, tcp 등과 같은 낮은 수준의 것들과 HTTP (리다이렉트 등)의 높은 수준의 세부 정보 사이에 위치합니다 RoundTrip은 * 요청 방법이 서버로 전송 된 단일 왕복 요청을 수행하고 서버 응답은 응답으로 . – Volker

답변

5

나는 Volker가 당신의 질문에 대한 자신의 의견에 맞다고 생각합니다. 내 관점에서 http.Transporthttp.RoundTripper의 구현을 제공하지만 RoundTrip()을 구현하는 경우 완전히 다른 방식을 제공 할 수 있습니다.

많은 사람들이 속도 제한을 추가하는 방법으로 이것을 사용했습니다 (즉, 그들은 커버 아래에 http.Transport을 사용할 수있는 구현을 제공하지만 프로그램이 바이트를 보내거나받는 속도를 제한하는 기능을 추가합니다) .