Maison > développement back-end > Golang > Comment désenregistrer les gestionnaires HTTP dans Go's net/http ?

Comment désenregistrer les gestionnaires HTTP dans Go's net/http ?

Mary-Kate Olsen
Libérer: 2024-11-05 17:01:02
original
924 Les gens l'ont consulté

How to Deregister HTTP Handlers in Go's net/http?

Gérer la désinscription dans net/http

Les gestionnaires HTTP dans net/http peuvent être enregistrés et désinscrits de manière dynamique pour offrir une flexibilité dans le traitement des demandes. Pour désenregistrer un gestionnaire, un ServerMux personnalisé peut être créé.

Implémentation d'un ServerMux personnalisé

Copiez le code de ServerMux à partir du code source Go (GOROOT/src/pkg /net/http/server.go, lignes 837-939). Ajoutez une méthode Deregister au ServerMux personnalisé pour supprimer les gestionnaires du mappage modèle-à-handler :

<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

Usage

Créez une instance du ServerMux personnalisé et gérez la route "/create" comme d'habitude :

<code class="go">mux := newMux()
mux.Handle("/create", &factory)</code>
Copier après la connexion

Définissez le ServerMux personnalisé comme gestionnaire pour un serveur HTTP :

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

Désinscription

Pour désenregistrer un gestionnaire, appelez simplement la méthode Deregister sur le ServerMux :

<code class="go">mux.Deregister("/123/*")</code>
Copier après la connexion

Cela modifiera le comportement de routage du serveur, et les requêtes ultérieures à "/123/*" ne seront plus géré par le gestionnaire précédemment enregistré.

Modifications sécurisées

Modifier le ServerMux en appelant deregister() à partir d'un autre goroutine est sûr et mettra à jour la logique de routage du serveur.

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