Maison  >  Article  >  développement back-end  >  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
Mary-Kate Olsenoriginal
2024-11-05 17:01:02829parcourir

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>

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>

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

<code class="go">srv := &http.Server {
    Addr: localhost:8080
    Handler: mux,
}</code>

Désinscription

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

<code class="go">mux.Deregister("/123/*")</code>

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!

Déclaration:
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