Heim >Backend-Entwicklung >Golang >Wie kann ich POST-Anfragen des Go-HTTP-Clients vorzeitig schließen?

Wie kann ich POST-Anfragen des Go-HTTP-Clients vorzeitig schließen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-29 09:01:09277Durchsuche

How Can I Prematurely Close Go HTTP Client POST Requests?

Vorzeitiges Schließen von Go-HTTP-Client-POST-Anfragen

Beim Arbeiten mit HTTP-Long-Polls unter Verwendung des http.Client kann es erforderlich sein, die Anfrage vorzeitig vom zu beenden Client-seitig. Historisch gesehen konnte resp.Body.Close() verwendet werden, für die Ausführung war jedoch eine separate Goroutine erforderlich.

Aktuelle Lösung: Kontextbasierter Abbruch

Um dieses Problem zu beheben Problem, Go empfiehlt jetzt die Verwendung von http.Request.WithContext, um einen Kontext mit einer Frist oder einem Stornierungsmechanismus zu übergeben. Dies macht eine zusätzliche Goroutine überflüssig und bietet einen saubereren, standardisierten Ansatz.

Beispiel

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)

Dieser Ansatz bietet eine bessere Kontrolle über die Stornierung von Anfragen und ermöglicht dies basierend auf Benutzeraktionen oder anderer Anwendungslogik ausgelöst werden, nicht nur auf Zeitüberschreitungen.

Das obige ist der detaillierte Inhalt vonWie kann ich POST-Anfragen des Go-HTTP-Clients vorzeitig schließen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn