Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menduakan Permintaan HTTP kepada Berbilang Pelayan dalam Go untuk Peralihan Pelayan Lancar?
Menduakan Permintaan HTTP kepada Berbilang Pelayan dalam Go
Apabila beralih daripada satu versi pelayan ke versi pelayan yang lain, adalah wajar untuk menduplikasi permintaan HTTP yang masuk kepada kedua-dua versi untuk penyerahan yang lancar. Walau bagaimanapun, pendekatan naif untuk mengubah suai permintaan secara langsung dipenuhi dengan ralat.
Untuk menangani perkara ini, penyelesaiannya terletak pada mencipta permintaan HTTP baharu dan menyalin bahagian yang diperlukan daripada permintaan masuk. Ini melibatkan:
Berikut ialah contoh kod:
func handler(w http.ResponseWriter, req *http.Request) { body, err := ioutil.ReadAll(req.Body) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } req.Body = ioutil.NopCloser(bytes.NewReader(body)) url := fmt.Sprintf("%s://%s%s", proxyScheme, proxyHost, req.RequestURI) proxyReq, err := http.NewRequest(req.Method, url, bytes.NewReader(body)) proxyReq.Header = make(http.Header) for h, val := range req.Header { proxyReq.Header[h] = val } resp, err := httpClient.Do(proxyReq) if err != nil { http.Error(w, err.Error(), http.StatusBadGateway) return } defer resp.Body.Close() // legacy code }
Pendekatan ini memastikan kedua-dua versi pelayan lama dan baharu menerima permintaan pendua tanpa mengubah suai permintaan asal.
Atas ialah kandungan terperinci Bagaimana untuk Menduakan Permintaan HTTP kepada Berbilang Pelayan dalam Go untuk Peralihan Pelayan Lancar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!