Comment définir la valeur de contexte dans un http.HandleFunc sans écraser l'objet de requête
Dans le code fourni, l'approche suivie dans func setValue pour définir une valeur de contexte à l'intérieur de *http.Request soulève des inquiétudes quant à l'écrasement de l'objet de requête. Voici une approche corrigée :
func setValue(r *http.Request, val string) *http.Request { ctx := context.WithValue(r.Context(), myContext, val) return r.WithContext(ctx) // return shallow copy to avoid overwriting request object }
Lors de la définition de la valeur de contexte dans http.HandleFunc, renvoyez un pointeur vers la requête nouvellement créée avec le contexte mis à jour. En faisant cela, nous évitons de modifier l'objet de requête d'origine et garantissons que les gestionnaires suivants reçoivent la valeur de contexte correcte :
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { r = setValue(r, "foobar") })
Si le gestionnaire invoque un autre gestionnaire, transmettez la requête mise à jour avec la valeur de contexte pour assurer la continuité. :
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { r = setValue(r, "foobar") someOtherHandler.ServeHTTP(w, r) // pass updated request to subsequent handler })
En utilisant cette approche, nous pouvons définir efficacement des valeurs de contexte dans http.HandleFunc sans compromettre l'objet de requête d'origine.
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!