Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menamatkan Permintaan HTTP POST secara Pramatang di Golang?

Bagaimana untuk Menamatkan Permintaan HTTP POST secara Pramatang di Golang?

Linda Hamilton
Linda Hamiltonasal
2024-11-25 18:28:11488semak imbas

How to Prematurely Terminate an HTTP POST Request in Golang?

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!

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