Menggugurkan Permintaan POST Klien HTTP Go Secara Pramatang
Dalam Go, perpustakaan http.Client biasanya digunakan untuk permintaan HTTP pihak klien. Semasa menjalankan operasi tinjauan panjang, mungkin perlu membatalkan permintaan secara pramatang disebabkan oleh tindakan pengguna atau peristiwa lain.
Pendekatan standard untuk mendahului atau membatalkan permintaan pihak pelanggan adalah dengan menetapkan tamat masa menggunakan http.Pengangkutan. Walau bagaimanapun, mekanisme ini hanya membenarkan pembatalan berdasarkan tamat masa, bukan tindakan yang dimulakan pengguna.
Penyelesaian yang lebih fleksibel ialah menggunakan fungsi http.Request.WithContext. Fungsi ini membenarkan permintaan untuk dikaitkan dengan konteks.Konteks. Konteks kemudiannya boleh dibatalkan atau ditetapkan dengan tarikh akhir, membenarkan pembatalan pada bila-bila masa.
Untuk melaksanakan pendekatan ini:
Contoh:
import ( "context" "net/http" ) // Create a context with a user-specified timeout or cancellation. ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() // Remember to cancel the context when done. // Create an HTTP request. req, err := http.NewRequest("POST", "http://example.com", nil) if err != nil { // Handle error. } // Add headers or other request-specific information. // Associate the request with the context. req = req.WithContext(ctx) // Perform the request. resp, err := client.Do(req) if err != nil { // Handle error. } // ... // Handle the response as usual.
Menggunakan pendekatan ini, permintaan akan dibatalkan secara automatik jika konteks dibatalkan atau jika tarikh akhir tamat tempoh.
Atas ialah kandungan terperinci Bagaimana untuk Menggugurkan Permintaan POST Klien HTTP Go Sebelum Selesai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!