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!