Rumah > Artikel > pembangunan bahagian belakang > Adakah `http.DefaultClient.Do(req)` GoLang secara automatik Mencuba Semula Permintaan HTTP pada Ketidaktersediaan Pelayan?
Mekanisme Permintaan HTTP Cuba Semula
Soalan:
Dalam GoLang, apabila melaksanakan http.DefaultClient .Do(req), adakah percubaan permintaan HTTP cuba semula secara automatik jika pelayan tidak tersedia buat sementara waktu?
Jawapan:
Tidak, klien HTTP GoLang tidak melaksanakan automatik mencuba semula. Anda perlu melaksanakan mekanisme cuba semula tersuai untuk mengendalikan ketaksediaan pelayan.
Perlaksanaan Corak Cuba Semula:
Berikut ialah contoh corak cuba semula asas yang boleh anda laksanakan:
<code class="go">package main import ( "fmt" "io/ioutil" "log" "net/http" ) func main() { var ( err error response *http.Response retries int = 3 ) for retries > 0 { response, err = http.Get("https://non-existent") // Replace with your server URL if err != nil { log.Println("Request failed", err) retries -= 1 } else { break // Request succeeded, exit the retry loop } } if response != nil { defer response.Body.Close() data, err := ioutil.ReadAll(response.Body) if err != nil { log.Fatal(err) } fmt.Printf("Data received: %s", data) } else { log.Fatal("Unable to establish connection") } }</code>
Dalam contoh ini, permintaan http.Get dilaksanakan dalam satu gelung, cuba mengambil data daripada pelayan. Jika permintaan gagal, gelung mengurangkan kiraan cuba semula dan diteruskan sehingga sama ada semua percubaan semula habis atau permintaan itu berjaya. Jika permintaan berjaya, respons akan dicetak. Jika semua percubaan semula gagal, mesej ralat direkodkan.
Atas ialah kandungan terperinci Adakah `http.DefaultClient.Do(req)` GoLang secara automatik Mencuba Semula Permintaan HTTP pada Ketidaktersediaan Pelayan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!