Vorzeitiges Abbrechen einer Go-HTTP-Client-POST-Anfrage
In Go wird die http.Client-Bibliothek häufig für clientseitige HTTP-Anfragen verwendet. Bei der Durchführung langer Polling-Vorgänge kann es aufgrund von Benutzeraktionen oder anderen Ereignissen erforderlich sein, die Anfrage vorzeitig abzubrechen.
Der Standardansatz, um einer clientseitigen Anfrage zuvorzukommen oder sie abzubrechen, besteht darin, eine Zeitüberschreitung festzulegen http.Transport. Dieser Mechanismus ermöglicht jedoch nur einen Abbruch basierend auf Zeitüberschreitungen und nicht auf vom Benutzer initiierten Aktionen.
Eine flexiblere Lösung ist die Verwendung der Funktion http.Request.WithContext. Mit dieser Funktion kann die Anfrage einem Kontext zugeordnet werden.Kontext. Der Kontext kann dann storniert oder mit einer Frist versehen werden, sodass eine Stornierung jederzeit möglich ist.
So implementieren Sie diesen Ansatz:
Beispiel:
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.
Bei diesem Ansatz wird die Anfrage automatisch abgebrochen, wenn der Kontext abgebrochen wird oder die Frist abgelaufen ist läuft ab.
Das obige ist der detaillierte Inhalt vonWie breche ich eine POST-Anfrage eines Go-HTTP-Clients vor dem Abschluss ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!