"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > net/http 패키지에서 처리기를 어떻게 등록 취소할 수 있습니까?

net/http 패키지에서 처리기를 어떻게 등록 취소할 수 있습니까?

2024년 12월 21일에 게시됨
검색:974

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

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