Maison > Article > développement back-end > Comment puis-je désinscrire les gestionnaires dans le package « net/http » de Go ?
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>
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>
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!