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

Mary-Kate Olsen
Freigeben: 2024-11-07 00:04:03
Original
921 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!