Bagaimana untuk Menggugurkan Permintaan POST Klien HTTP Go Sebelum Selesai?

Patricia Arquette
Lepaskan: 2024-11-27 07:50:09
asal
658 orang telah melayarinya

How to Abort a Go HTTP Client POST Request Before Completion?

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:

  1. Buat http.Permintaan seperti biasa.
  2. Gunakan req.WithContext(ctx) untuk mengaitkan permintaan dengan konteks. Konteks boleh dibuat menggunakan context.WithDeadline atau context.WithCancel.
  3. Gunakan objek permintaan yang diubah suai (req) untuk membuat permintaan menggunakan kaedah klien.Do.

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.
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan