Отмена регистрации обработчика в net/http
В net/http обработчики могут быть динамически зарегистрированы для определенных шаблонов URL-адресов с помощью http.Handle функция. Однако мультиплексор по умолчанию не предоставляет механизма отмены регистрации обработчиков.
Один из подходов к отмене регистрации обработчика — создать собственный мультиплексор, расширяющий стандартный тип http.ServeMux. Этот пользовательский мультиплексор может включать в себя метод отмены регистрации обработчиков. Например, следующий код определяет пользовательский мультиплексор, который добавляет метод 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
}
После определения пользовательского мультиплексора его можно использовать для обработки запросов. Например:
mux := new(MyMux)
mux.Handle("/create", &factory)
srv := &http.Server{
Addr: "localhost:8080",
Handler: mux,
}
srv.ListenAndServe()
Вызов метода Deregister в пользовательском мультиплексоре остановит соответствующий обработчик от обслуживания запросов. Обратите внимание, что обработчик должен быть зарегистрирован с использованием того же экземпляра пользовательского мультиплексора, чтобы отмена регистрации была эффективной.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3