Maison > développement back-end > Golang > le corps du texte

Comment mettre fin prématurément à une requête HTTP POST dans Golang ?

Linda Hamilton
Libérer: 2024-11-25 18:28:11
original
406 Les gens l'ont consulté

How to Prematurely Terminate an HTTP POST Request in Golang?

Résiliation prématurée d'une requête HTTP POST en Golang

Dans le cadre de la mise en œuvre d'un client à interrogation longue utilisant http.Client, la nécessité Il arrive fréquemment de fermer ou d'annuler prématurément une requête HTTP POST. Alors que l'approche traditionnelle impliquait la fermeture du corps de la réponse (resp.Body.Close()) dans une goroutine distincte, elle introduit des complications car le client est généralement bloqué lors de la lecture de la réponse.

Cependant, la stratégie préférée actuelle pour la demande d’annulation implique l’utilisation d’un contexte avec des délais ou qui peut être annulé selon les besoins. Ceci est réalisé grâce à la méthode http.Request.WithContext.

Voici comment vous pouvez intégrer cette stratégie dans votre code :

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)
Copier après la connexion

En définissant le contexte sur la requête, toutes les opérations ultérieures sur cette demande respectera la date limite ou l’état d’annulation de ce contexte. Par exemple, si le contexte est annulé avant que la requête ne soit terminée, le transport sous-jacent recevra une erreur et la requête sera abandonnée. Cela fournit un mécanisme clair et concis pour mettre fin prématurément à une requête HTTP POST du côté client.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal