Heim > Backend-Entwicklung > Golang > Wie melde ich HTTP-Handler im Netz/http von Go ab?

Wie melde ich HTTP-Handler im Netz/http von Go ab?

Mary-Kate Olsen
Freigeben: 2024-11-05 17:01:02
Original
911 Leute haben es durchsucht

How to Deregister HTTP Handlers in Go's net/http?

Aufhebung der Registrierung in net/http behandeln

HTTP-Handler in net/http können dynamisch registriert und abgemeldet werden, um Flexibilität bei der Bearbeitung von Anfragen zu bieten. Um die Registrierung eines Handlers aufzuheben, kann ein benutzerdefinierter ServerMux erstellt werden.

Implementieren eines benutzerdefinierten ServerMux

Kopieren Sie den Code für ServerMux aus dem Go-Quellcode (GOROOT/src/pkg /net/http/server.go, Zeilen 837-939). Fügen Sie dem benutzerdefinierten ServerMux eine Deregister-Methode hinzu, um Handler aus der Muster-zu-Handler-Zuordnung zu entfernen:

<code class="go">func (mux *MyMux) Deregister(pattern string) error {
    mux.mu.Lock()
    defer mux.mu.Unlock()
    del(mux.m, pattern)
    return nil
}</code>
Nach dem Login kopieren

Verwendung

Erstellen Sie eine Instanz des benutzerdefinierten ServerMux und Behandeln Sie die Route „/create“ wie gewohnt:

<code class="go">mux := newMux()
mux.Handle("/create", &factory)</code>
Nach dem Login kopieren

Legen Sie den benutzerdefinierten ServerMux als Handler für einen HTTP-Server fest:

<code class="go">srv := &http.Server {
    Addr: localhost:8080
    Handler: mux,
}</code>
Nach dem Login kopieren

Registrierung aufheben

Um die Registrierung eines Handlers aufzuheben, rufen Sie einfach die Deregister-Methode auf dem ServerMux auf:

<code class="go">mux.Deregister("/123/*")</code>
Nach dem Login kopieren

Dadurch wird das Routing-Verhalten des Servers geändert und nachfolgende Anfragen an „/123/*“ werden nicht mehr gesendet Wird vom zuvor registrierten Handler verarbeitet.

Sichere Änderungen

Das Ändern des ServerMux durch Aufrufen von deregister() aus einer anderen Goroutine ist sicher und aktualisiert die Routing-Logik für den Server.

Das obige ist der detaillierte Inhalt vonWie melde ich HTTP-Handler im Netz/http von Go ab?. 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