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!