„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich die Registrierung von Handlern im net/http-Paket aufheben?

Wie kann ich die Registrierung von Handlern im net/http-Paket aufheben?

Veröffentlicht am 21.12.2024
Durchsuche:246

How Can I Unregister Handlers in the net/http Package?

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.

Neuestes Tutorial Mehr>

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