>  기사  >  백엔드 개발  >  net/http 패키지에서 처리기를 어떻게 등록 취소할 수 있습니까?

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-07 00:04:03919검색

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

net/http에서 핸들러 등록 취소

net/http에서 http.Handle을 사용하여 특정 URL 패턴에 핸들러를 동적으로 등록할 수 있습니다. 기능. 그러나 기본 멀티플렉서는 핸들러 등록 취소를 위한 메커니즘을 제공하지 않습니다.

핸들러 등록을 취소하는 한 가지 접근 방식은 표준 http.ServeMux 유형을 확장하는 사용자 정의 멀티플렉서를 생성하는 것입니다. 이 사용자 정의 멀티플렉서에는 핸들러 등록 취소를 위한 메소드가 포함될 수 있습니다. 예를 들어, 다음 코드는 Deregister 메소드를 추가하는 사용자 정의 멀티플렉서를 정의합니다.

<code class="go">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
}</code>

사용자 정의 멀티플렉서를 정의하고 나면 요청을 처리하는 데 사용할 수 있습니다. 예를 들면 다음과 같습니다.

<code class="go">mux := new(MyMux)
mux.Handle("/create", &factory)

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

사용자 지정 멀티플렉서에서 Deregister 메서드를 호출하면 해당 처리기가 요청 처리를 중지합니다. 등록 취소가 적용되려면 동일한 사용자 정의 멀티플렉서 인스턴스를 사용하여 핸들러를 등록해야 합니다.

위 내용은 net/http 패키지에서 처리기를 어떻게 등록 취소할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.