Abandon prématurément d'une requête POST du client HTTP Go
Dans Go, la bibliothèque http.Client est couramment utilisée pour les requêtes HTTP côté client. Lors de l'exécution d'opérations d'interrogation longues, il peut être nécessaire d'abandonner prématurément la requête en raison d'actions de l'utilisateur ou d'autres événements.
L'approche standard pour anticiper ou annuler une requête côté client consiste à définir un délai d'attente à l'aide de http.Transports. Cependant, ce mécanisme permet uniquement l'annulation en fonction des délais d'attente, et non des actions initiées par l'utilisateur.
Une solution plus flexible consiste à utiliser la fonction http.Request.WithContext. Cette fonction permet d'associer la requête à un contexte.Context. Le contexte peut ensuite être annulé ou fixé avec une date limite, permettant une annulation à tout moment.
Pour mettre en œuvre cette approche :
Exemple :
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.
Grâce à cette approche, la requête sera automatiquement abandonnée si le contexte est annulé ou si le délai expire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!