Aufheben der Registrierung eines Handlers in net/http
In net/http können Handler mithilfe des http.Handle dynamisch für bestimmte URL-Muster registriert werden Funktion. Der Standard-Multiplexer bietet jedoch keinen Mechanismus zum Aufheben der Registrierung von Handlern.
Ein Ansatz zum Aufheben der Registrierung eines Handlers besteht darin, einen benutzerdefinierten Multiplexer zu erstellen, der den Standardtyp http.ServeMux erweitert. Dieser benutzerdefinierte Multiplexer kann eine Methode zum Aufheben der Registrierung von Handlern enthalten. Der folgende Code definiert beispielsweise einen benutzerdefinierten Multiplexer, der eine Deregister-Methode hinzufügt:
type MyMux struct {
*http.ServeMux
mu sync.Mutex // Guards the m map
m map[string]http.Handler
}
func (mux *MyMux) Deregister(pattern string) error {
mux.mu.Lock()
defer mux.mu.Unlock()
if _, ok := mux.m[pattern]; !ok {
return errors.New("handler not registered")
}
delete(mux.m, pattern)
return nil
}
Sobald der benutzerdefinierte Multiplexer definiert ist, kann er zur Bearbeitung von Anfragen verwendet werden. Zum Beispiel:
mux := new(MyMux)
mux.Handle("/create", &factory)
srv := &http.Server{
Addr: "localhost:8080",
Handler: mux,
}
srv.ListenAndServe()
Der Aufruf der Deregister-Methode auf dem benutzerdefinierten Multiplexer verhindert, dass der entsprechende Handler Anforderungen bearbeitet. Beachten Sie, dass der Handler mit derselben benutzerdefinierten Multiplexer-Instanz registriert werden muss, damit die Deregistrierung wirksam wird.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3