Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah saya boleh menutup Permintaan POST Klien HTTP Go secara Pramatang?

Bagaimanakah saya boleh menutup Permintaan POST Klien HTTP Go secara Pramatang?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-29 09:01:09356semak imbas

How Can I Prematurely Close Go HTTP Client POST Requests?

Penutupan Pramatang Permintaan POST Klien HTTP Go

Apabila bekerja dengan tinjauan panjang HTTP menggunakan http.Client, mungkin perlu untuk menamatkan permintaan itu lebih awal daripada pihak pelanggan. Dari segi sejarah, resp.Body.Close() boleh digunakan, tetapi ia memerlukan goroutine yang berasingan untuk dilaksanakan.

Penyelesaian Semasa: Pembatalan Berdasarkan Konteks

Untuk menyelesaikan masalah ini isu, Go kini mengesyorkan menggunakan http.Request.WithContext untuk lulus konteks dengan tarikh akhir atau mekanisme pembatalan. Ini menghapuskan keperluan untuk goroutine tambahan dan menyediakan pendekatan yang lebih bersih dan standard.

Contoh

req, err := http.NewRequest("GET", "http://example.com", nil)
req = req.WithContext(ctx) // Pass the context with deadline or cancelation mechanism
resp, err := client.Do(req)

Pendekatan ini memberikan kawalan yang lebih besar ke atas pembatalan permintaan, membolehkannya dicetuskan berdasarkan tindakan pengguna atau logik aplikasi lain, bukan hanya tamat masa.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menutup Permintaan POST Klien HTTP Go secara Pramatang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn