Maison > développement back-end > Golang > Comment puis-je désinscrire les gestionnaires dans le package « net/http » de Go ?

Comment puis-je désinscrire les gestionnaires dans le package « net/http » de Go ?

Susan Sarandon
Libérer: 2024-11-05 14:33:02
original
998 Les gens l'ont consulté

How can I Unregister Handlers in Go's `net/http` Package?

Désinscription des gestionnaires dans net/http

Dans net/http, l'enregistrement d'un gestionnaire associe un modèle d'URL à un gestionnaire HTTP spécifique. Cependant, il peut s'avérer nécessaire de désenregistrer un gestionnaire au moment de l'exécution, de la même manière que pour créer un gestionnaire pour un modèle d'URL.

L'exemple fourni montre la création d'une fabrique de gestionnaires pour créer dynamiquement des gestionnaires pour des URL telles que "/123". /" et enregistrez-les. L'URL "/destroy/123" correspondante est manquante pour désenregistrer le gestionnaire pour "/123/".

Pour implémenter la fonctionnalité de désenregistrement, un ServerMux personnalisé peut être créé en copiant le code du GOROOT. /src/pkg/net/http/server.go. Le ServerMux personnalisé nécessitera une méthode de désinscription. Cela peut être implémenté en verrouillant la carte et en supprimant l'entrée associée au modèle.

<code class="go">func (mux *MyMux) Deregister(pattern string) error {
    mux.mu.Lock()
    defer mux.mu.Unlock()
    del(mux.m, pattern)
    return nil
}</code>
Copier après la connexion

Pour utiliser ce multiplexeur personnalisé, il peut être configuré en tant que gestionnaire pour un serveur HTTP. Modifier le mux en appelant deregister() depuis une autre goroutine est sûr et affectera le routage des messages par ListenAndServe().

<code class="go">mux := newMux()
mux.Handle("/create", &factory)

srv := &http.Server {
    Addr: localhost:8080
    Handler: mux,
}
srv.ListenAndServe()</code>
Copier après la connexion

En implémentant un ServerMux personnalisé avec une méthode de désenregistrement, il devient possible de gérer les gestionnaires dynamiquement et désenregistrez-les au moment de l'exécution.

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