Maison > développement back-end > Golang > Comment fonctionne la méthode « ServeHTTP » de Go dans les gestionnaires HTTP personnalisés ?

Comment fonctionne la méthode « ServeHTTP » de Go dans les gestionnaires HTTP personnalisés ?

Mary-Kate Olsen
Libérer: 2024-12-28 06:36:14
original
560 Les gens l'ont consulté

How Does Go's `ServeHTTP` Method Work in Custom HTTP Handlers?

Problèmes pour comprendre ServeHTTP - Comment fonctionne ce code ?

Dans le développement Web Go, l'implémentation de la méthode ServeHTTP permet à un type de servir de Gestionnaire HTTP.

Dans l'exemple de code fourni :

type foo int

func (m foo) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "Some text")
}
Copier après la connexion

foo implémente le Méthode ServeHTTP, ce qui en fait un gestionnaire HTTP. Lorsque http.ListenAndServe est appelé avec foo, la séquence d'événements suivante se produit :

  • http.ListenAndServe appelle srv.ListenAndServe(), qui configure un écouteur sur le port 8080.
  • Lorsqu'une requête est reçue, l.Accept() crée un objet de connexion (c) qui contient les rédacteurs de requête et de réponse. (rw).
  • c.serve() est lancé dans une goroutine.
  • Dans la goroutine, w, err := c.readRequest(ctx) lit la requête et crée un rédacteur de réponse object (w).
  • serverHandler{...} encapsule l'appel ServeHTTP et garantit qu'un gestionnaire est disponible (soit le gestionnaire personnalisé, soit le gestionnaire par défaut multiplexeur).
  • Enfin, handler.ServeHTTP(rw, req) appelle la méthode ServeHTTP personnalisée à partir de foo, qui écrit "Du texte" à l'auteur de la réponse.

En substance, http.ListenAndServe exécute un serveur avec le gestionnaire fourni. Lorsqu'une requête est reçue, le serveur appelle la méthode ServeHTTP du gestionnaire, qui est implémentée dans foo. Cette implémentation écrit le texte spécifié à l'auteur de la réponse et le renvoie au 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