Penamatan Pramatang Permintaan HTTP POST di Golang
Dalam konteks melaksanakan klien tinjauan panjang menggunakan http.Client, keperluan kerap timbul untuk menutup atau membatalkan permintaan HTTP POST secara pramatang. Walaupun pendekatan tradisional melibatkan menutup badan tindak balas (resp.Body.Close()) dalam goroutine yang berasingan, ia memperkenalkan komplikasi kerana pelanggan biasanya disekat semasa membaca respons.
Walau bagaimanapun, strategi pilihan semasa untuk pembatalan permintaan melibatkan penggunaan konteks dengan tarikh akhir atau yang boleh dibatalkan mengikut keperluan. Ini dicapai melalui kaedah http.Request.WithContext.
Begini cara anda boleh memasukkan strategi ini ke dalam kod anda:
import ( "context" "net/http" ) // ... // Create a context with a deadline or that can be canceled ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() req, err := http.NewRequest("POST", "http://example.com", bytes.NewBuffer(jsonPostBytes)) // ... // Add the context to the request req = req.WithContext(ctx) // Perform the request resp, err := client.Do(req)
Dengan menetapkan konteks pada permintaan, sebarang operasi berikutnya pada permintaan itu akan menghormati tarikh akhir atau keadaan pembatalan konteks itu. Contohnya, jika konteks dibatalkan sebelum permintaan selesai, pengangkutan asas akan menerima ralat dan permintaan akan dibatalkan. Ini menyediakan mekanisme yang jelas dan ringkas untuk menamatkan permintaan HTTP POST daripada pihak pelanggan secara pramatang.
Atas ialah kandungan terperinci Bagaimana untuk Menamatkan Permintaan HTTP POST secara Pramatang di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!