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

Comment combiner plusieurs multiplexeurs HTTP dans Go ?

Linda Hamilton
Libérer: 2024-11-01 06:41:31
original
573 Les gens l'ont consulté

How Can You Combine Multiple HTTP Multiplexers in Go?

Combinaison de plusieurs multiplexeurs HTTP dans Go

Étant donné deux instances de http.ServeMux que vous devez servir sur le même numéro de port, il existe plusieurs façons d'y parvenir.

Utilisation de multiplexeurs imbriqués

Étant donné qu'un http.ServeMux implémente l'interface http.Handler, il peut être imbriqué dans un autre multiplexeur. Un exemple consiste à utiliser la fonction StripPrefix() pour créer un gestionnaire qui supprime un préfixe de l'URL de la requête et le transmet au multiplexeur imbriqué.

<code class="go">rootMux := http.NewServeMux()
subMux := http.NewServeMux()

// Handle requests to /top_path/sub_path
subMux.HandleFunc("/sub_path", myHandleFunc)

// Strip the /top_path prefix from the URL before passing it to subMux
rootMux.Handle("/top_path/", http.StripPrefix("/top_path", subMux))

http.ListenAndServe(":8000", rootMux)</code>
Copier après la connexion

Approche alternative utilisant un gestionnaire personnalisé

Une autre approche consiste à créer un gestionnaire personnalisé qui combine les deux multiplexeurs.

<code class="go">import (
    "net/http"
)

// CombinedMux combines multiple http.ServeMux instances.
type CombinedMux struct {
    muxes []http.Handler
}

// ServeHTTP implements the http.Handler interface for CombinedMux.
func (c *CombinedMux) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    for _, mux := range c.muxes {
        mux.ServeHTTP(w, r)
    }
}

func main() {
    muxA, muxB := http.NewServeMux(), http.NewServeMux()

    // Initialize muxA and muxB

    combinedMux := &CombinedMux{
        muxes: []http.Handler{muxA, muxB},
    }

    http.ListenAndServe(":8080", combinedMux)
}</code>
Copier après la connexion

Dans cette approche, le gestionnaire CombinedMux parcourt la liste des multiplexeurs et délègue la logique de service à chacun dans l'ordre. Notez que cette méthode peut entraîner l'appel de plusieurs gestionnaires pour chaque requête, contrairement à l'approche du multiplexeur imbriqué.

Les deux approches offrent des moyens de combiner plusieurs instances http.ServeMux et de les servir sur le même numéro de port. Choisissez l'approche qui correspond le mieux à vos besoins.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!