net/http에서 핸들러 등록 취소
net/http에서 핸들러는 http.Handle을 사용하여 특정 URL 패턴에 동적으로 등록될 수 있습니다. 기능. 그러나 기본 멀티플렉서는 핸들러 등록 취소를 위한 메커니즘을 제공하지 않습니다.
핸들러 등록을 취소하는 한 가지 접근 방식은 표준 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