"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso cancelar o registro de manipuladores no pacote net/http?

Como posso cancelar o registro de manipuladores no pacote net/http?

Publicado em 2024-12-21
Navegar:684

How Can I Unregister Handlers in the net/http Package?

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.

Tutorial mais recente Mais>

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