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

Devriez-vous différer `req.Body.Close()` dans les gestionnaires Net/HTTP ?

DDD
Libérer: 2024-11-10 21:22:02
original
902 Les gens l'ont consulté

Should You Defer `req.Body.Close()` in Net/HTTP Handlers?

Placement correct de "defer req.Body.Close()"

Dans les gestionnaires Net/HTTP, il est courant de voir "defer req.Body.Close( )" utilisé pour fermer le corps de la requête après traitement. Cependant, le placement idéal de cette instruction a fait l'objet de débats.

Placement initial ou placement final

Certains développeurs soutiennent qu'elle devrait être placée à la fin de la fonction immédiatement avant le déclaration de retour. Cela garantit que le corps est fermé dans tous les cas, qu'une erreur se produise ou non.

D'autres préfèrent le placer près du début de la fonction. Cette approche permet une fermeture précoce du corps, libérant des ressources et évitant potentiellement une consommation inutile de mémoire.

Cycle de vie des requêtes HTTP

Il est important de comprendre le cycle de vie des requêtes HTTP pour prendre une décision éclairée. Selon la spécification HTTP/1.1, le serveur est responsable de la fermeture du corps de la requête :

"Le serveur doit lire et éliminer tout contenu de requête envoyé dans la charge utile de la requête avant qu'une réponse puisse être envoyée."

Cela implique que la responsabilité de la fermeture du corps incombe principalement au serveur, et non au gestionnaire.

Responsabilités du gestionnaire et du serveur

Bien qu'il soit techniquement possible de fermer le corps de la requête dans le gestionnaire, il est généralement considéré comme inutile. Le serveur fermera automatiquement le corps une fois qu'il aura fini de traiter la demande. En fermant explicitement et inutilement le corps dans le gestionnaire, vous pouvez interférer avec le processus du serveur et introduire des conditions de concurrence potentielles.

Par conséquent, la pratique recommandée est d'omettre "defer req.Body.Close()" de vos gestionnaires. tout à fait. Le serveur se chargera de fermer le corps comme prévu, assurant ainsi un traitement correct des requêtes HTTP.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal