2014-11-03 7 views
6

मुझे समझ में कठिनाई हो रही है कि हमें गो में 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, 
} 

मेरा प्रश्न: RoundTripper नियमित Transport से अलग है ?

+1

क्या आप जानना चाहते हैं कि 'RoundTripper' क्या है या आप जानना चाहते हैं कि क्यों' डिफ़ॉल्ट ट्रांस्पोर्ट 'प्रकार' RoundTripper' है? क्योंकि इंटरफ़ेस 'RoundTripper' राउंड ट्रिप करने के लिए मौजूद है। – nemo

+1

मैं जानना चाहता हूं कि RoundTripper –

+5

प्रलेखन से: "RoundTripper एक HTTP इंटरफ़ेस निष्पादित करने की क्षमता का प्रतिनिधित्व करने वाला एक इंटरफ़ेस है, जो किसी दिए गए अनुरोध के लिए प्रतिक्रिया प्राप्त करता है।" यह डायलिंग, टीसीपी इत्यादि जैसे निम्न स्तर की सामग्री के बीच में बैठता है और HTTP (रीडायरेक्ट इत्यादि) के उच्च स्तर के विवरण RoundTrip है * * विधि सर्वर पर भेजे गए अनुरोध की एक एकल दौर यात्रा करती है, प्रतिक्रिया के साथ सर्वर उत्तर । – Volker

उत्तर

5

मुझे लगता है कि वोल्कर को आपके प्रश्न पर उनकी टिप्पणी में सही मिला। मेरे परिप्रेक्ष्य से, http.Transporthttp.RoundTripper का कार्यान्वयन प्रदान करता है, लेकिन आप अपना खुद का प्रदान कर सकते हैं जो पूरी तरह से अलग है, जब तक यह RoundTrip() लागू करता है।

कई लोगों ने इसे रेट सीमित करने के तरीके के रूप में उपयोग किया है (यानी वे एक कार्यान्वयन प्रदान करते हैं जो कवर के तहत http.Transport का उपयोग कर सकता है, लेकिन वे उस दर को बाधित करने की क्षमता को जोड़ते हैं जिस पर आपका प्रोग्राम बाइट भेजता है या प्राप्त करता है) ।