"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo cancelar el registro de controladores en el paquete net/http?

¿Cómo puedo cancelar el registro de controladores en el paquete net/http?

Publicado el 2024-12-21
Navegar:973

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

Anular el registro de un controlador en net/http

En net/http, los controladores se pueden registrar dinámicamente en patrones de URL específicos utilizando http.Handle función. Sin embargo, el multiplexor predeterminado no proporciona un mecanismo para cancelar el registro de controladores.

Un enfoque para cancelar el registro de un controlador es crear un multiplexor personalizado que extienda el tipo http.ServeMux estándar. Este multiplexor personalizado puede incluir un método para cancelar el registro de controladores. Por ejemplo, el siguiente código define un multiplexor personalizado que agrega un 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
}

Una vez definido el multiplexor personalizado, se puede utilizar para manejar solicitudes. Por ejemplo:

mux := new(MyMux)
mux.Handle("/create", &factory)

srv := &http.Server{
    Addr:    "localhost:8080",
    Handler: mux,
}
srv.ListenAndServe()

Llamar al método Deregister en el multiplexor personalizado impedirá que el controlador correspondiente atienda las solicitudes. Tenga en cuenta que el controlador debe estar registrado utilizando la misma instancia de multiplexor personalizado para que la cancelación del registro sea efectiva.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3