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>
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>
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>
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>
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!