Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Pakej Konteks Go Boleh Meningkatkan Pengendalian Pembatalan Permintaan POST?

Bagaimanakah Pakej Konteks Go Boleh Meningkatkan Pengendalian Pembatalan Permintaan POST?

Linda Hamilton
Linda Hamiltonasal
2024-12-04 00:12:11446semak imbas

How Can Go's Context Package Improve POST Request Cancellation Handling?

Pergi Konteks http dan Permintaan Pembatalan dengan Permintaan POST

Apabila pelanggan menghantar permintaan GET tanpa badan, pelayan dapat mengesan isyarat pembatalan apabila pelanggan menutup sambungan. Ini dicapai dengan membaca badan permintaan dan mengesan apabila pelanggan telah memutuskan sambungan.

Walau bagaimanapun, apabila pelanggan menghantar permintaan POST dengan badan permintaan, pelayan tidak dapat mengesan isyarat pembatalan dengan segera. Ini kerana pelayan tidak mula membaca badan permintaan sehingga aplikasi secara eksplisit melakukannya. Akibatnya, pelayan tidak dapat menangkap isyarat pembatalan sehingga tarikh akhir permintaan telah dipenuhi.

Untuk menangani isu ini dan mengendalikan pembatalan dengan betul menggunakan pakej konteks Go, baca isi permintaan dengan segera . Ini memastikan pelayan dapat mengesan apabila pelanggan telah memutuskan sambungan dan boleh membatalkan sebarang kerja yang tidak perlu secepat mungkin. Dengan membaca kandungan permintaan POST, anda mencetuskan semakan sambungan pelayan untuk mula membaca sambungan dan mengesan sambungan tertutup.

Berikut ialah contoh cara mengubah suai kod untuk membaca kandungan permintaan dan menangkap isyarat pembatalan dengan segera:

func handler(w http.ResponseWriter, r *http.Request) {
    go func(done <-chan struct{}) {
        <-done
        fmt.Println("message", "client connection has gone away, request got cancelled")
    }(r.Context().Done())

    io.Copy(ioutil.Discard, r.Body) // Read the body
    time.Sleep(30 * time.Second)
    fmt.Fprintf(w, "Hi there, I love %s!\n", r.URL.Path[1:])
}

Dengan membaca kandungan permintaan secara eksplisit, pelayan boleh mengesan isyarat pembatalan sebaik sahaja pelanggan menutup sambungan, membenarkan keluaran sumber tepat pada masanya di bahagian pelayan.

Atas ialah kandungan terperinci Bagaimanakah Pakej Konteks Go Boleh Meningkatkan Pengendalian Pembatalan Permintaan POST?. 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