Atharraich slighean proxy HTTP Go gun Client.Transport atharrachadh
Cleachd pasgan RoundTripper sioncronaichte gus giùlan proxy ùr rèitichte fhoillseachadh gun raon http.Client beò atharrachadh.
Ma tha http.Client air a roinn mar-thà le iarrtasan co-aontach, cùm an raon Transport aige seasmhach. Faodaidh pasgan an giùlan làn-rèitichte a gheibh gach turas às dèidh sin a shioncronachadh:
type routeSlot struct {
mu sync.RWMutex
current http.RoundTripper
}
func (s *routeSlot) RoundTrip(r *http.Request) (*http.Response, error) {
s.mu.RLock()
current := s.current
s.mu.RUnlock()
return current.RoundTrip(r)
}
func (s *routeSlot) Set(next http.RoundTripper) {
s.mu.Lock()
s.current = next
s.mu.Unlock()
}Le net/http agus sync, tòisich e mus tèid an neach-ceannach fhoillseachadh:
slot := &routeSlot{current: initialTransport}
client := &http.Client{Transport: slot}
slot.Set(nextTransport)Feumaidh initialTransport agus nextTransport a bhith neo-nil, làn-rèitichte agus sàbhailte a thaobh co-aontachd. Tog gach giùlan proxy mus fhoillsich thu e, agus fàg a rèiteachadh gun atharrachadh fhad 's a tha iarrtasan ga chleachdadh.
Chan eil an glas a' dìon ach dealbh a' phuingear, mar sin cha chùm iarrtas mall an glas slighe airson a mhalairt lìonra gu lèir. Tha iarrtas a tha a' cleachdadh an deilbh roimhe a' leantainn air a' ghiùlan sin; cha dèan an t-atharrachadh ath-chluich air no cha ghluais e a cheangal.
Cùm agus leig dheth seann ghiùlaidhean tro chuairt-beatha cuingealaichte na h-aplacaid, a' leigeil le obair a tha a' dol a chrìochnachadh agus a' dùnadh linnean dìomhain far a bheil sin iomchaidh. Faodaidh ath-sheòladh RoundTrip eile adhbhrachadh às dèidh atharrachaidh. Ma dh'fheumas sruth-obrach slàn aon shlighe, sònraich an t-slighe sin aig crìoch an t-sruth-obrach an àite an roghnaichear co-roinnte seo atharrachadh letheach slighe troimhe.