Cancelar registro de um manipulador em net/http
Em net/http, os manipuladores podem ser registrados dinamicamente em padrões de URL específicos usando o http.Handle função. No entanto, o multiplexador padrão não fornece um mecanismo para cancelar o registro de manipuladores.
Uma abordagem para cancelar o registro de um manipulador é criar um multiplexador personalizado que estenda o tipo http.ServeMux padrão. Este multiplexador personalizado pode incluir um método para cancelar o registro de manipuladores. Por exemplo, o código a seguir define um multiplexador personalizado que adiciona um método Deregister:
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
}
Uma vez definido o multiplexador personalizado, ele pode ser usado para lidar com solicitações. Por exemplo:
mux := new(MyMux)
mux.Handle("/create", &factory)
srv := &http.Server{
Addr: "localhost:8080",
Handler: mux,
}
srv.ListenAndServe()
Chamar o método Deregister no multiplexador personalizado impedirá que o manipulador correspondente atenda às solicitações. Observe que o manipulador deve ser registrado usando a mesma instância do multiplexador personalizado para que o cancelamento do registro seja efetivo.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3