Apabila membalas permintaan HTTP dengan kod status 202 Accepted, adalah penting untuk mengendalikan penutupan permintaan dengan betul untuk pastikan muatan masih boleh diproses di latar belakang.
Kecukupan Penyata Pulangan
Apabila berurusan dengan permintaan yang perlu ditutup, adalah penting untuk pulangkan daripada fungsi pengendali untuk menandakan selesainya. Ini kerana, mengikut dokumentasi http.Handler, pengembalian menunjukkan bahawa permintaan telah selesai dan mengakses ResponseWriter atau Request.Body secara serentak atau selepas pemulangan adalah tidak sah.
Mengabaikan Pulangan Akhir
Kembali daripada fungsi pengendali sudah memadai untuk menutup permintaan, jadi anda boleh meninggalkan pernyataan pulangan akhir sama sekali. Dalam Go, pelaksanaan keluar dari fungsi apabila pernyataan terakhirnya dilaksanakan, tidak kira sama ada ia adalah pemulangan atau tidak.
Kod Minimum untuk 202 Diterima
Jika anda hanya perlukan untuk mengembalikan kod status 202 Diterima dan meneruskan pemprosesan di latar belakang, kod minimum berikut sudah memadai:
<code class="go">func index(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusAccepted) go sleep() }</code>
Langkah Berjaga-jaga dengan Penggunaan Serentak
Ingat bahawa mengakses ResponseWriter atau http.Nilai permintaan dalam goroutine serentak selepas kembali daripada pengendali adalah tidak selamat kerana ia mungkin digunakan semula.
Atas ialah kandungan terperinci Bagaimana untuk Menutup Permintaan HTTP dengan betul dengan Status 202 Diterima Semasa Mengekalkan Pemprosesan Latar Belakang dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!