Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich die Registrierung von Handlern im net/http-Paket aufheben?

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-07 00:04:03919Durchsuche

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

Registrierung eines Handlers in net/http aufheben

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:

<code class="go">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
}</code>

Sobald der benutzerdefinierte Multiplexer definiert ist, kann er zur Bearbeitung von Anforderungen verwendet werden. Zum Beispiel:

<code class="go">mux := new(MyMux)
mux.Handle("/create", &factory)

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

Der Aufruf der Deregister-Methode auf dem benutzerdefinierten Multiplexer verhindert, dass der entsprechende Handler Anfragen bearbeitet. Beachten Sie, dass der Handler mit derselben benutzerdefinierten Multiplexer-Instanz registriert werden muss, damit die Deregistrierung wirksam wird.

Das obige ist der detaillierte Inhalt vonWie kann ich die Registrierung von Handlern im net/http-Paket aufheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn