>백엔드 개발 >Golang >Go의 `net/http` 패키지에서 핸들러를 어떻게 등록 취소할 수 있나요?

Go의 `net/http` 패키지에서 핸들러를 어떻게 등록 취소할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-11-05 14:33:021007검색

How can I Unregister Handlers in Go's `net/http` Package?

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

net/http에서 핸들러를 등록하면 URL 패턴이 특정 HTTP 핸들러와 연결됩니다. 그러나 URL 패턴에 대한 핸들러를 생성하는 것과 유사하게 런타임 시 핸들러 등록을 취소해야 할 수도 있습니다.

제공된 예는 "/123과 같은 URL에 대한 핸들러를 동적으로 생성하기 위한 핸들러 팩토리 생성을 보여줍니다. /"을 선택하여 등록하세요. "/123/"에 대한 핸들러 등록을 취소하기 위한 해당 "/destroy/123" URL이 없습니다.

등록 취소 기능을 구현하려면 GOROOT에서 코드를 복사하여 사용자 정의 ServerMux를 생성할 수 있습니다. /src/pkg/net/http/server.go. 사용자 정의 ServerMux에는 등록 취소 방법이 필요합니다. 이는 맵을 잠그고 패턴과 관련된 항목을 삭제하여 구현할 수 있습니다.

<code class="go">func (mux *MyMux) Deregister(pattern string) error {
    mux.mu.Lock()
    defer mux.mu.Unlock()
    del(mux.m, pattern)
    return nil
}</code>

이 사용자 정의 Mux를 사용하려면 HTTP 서버에 대한 핸들러로 구성할 수 있습니다. 다른 고루틴에서 deregister()를 호출하여 mux를 수정하는 것은 안전하며 ListenAndServe()에 의한 메시지 라우팅에 영향을 미칩니다.

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

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

등록 취소 메소드를 사용하여 사용자 정의 ServerMux를 구현하면 핸들러 관리가 가능해집니다. 동적으로 등록하고 런타임에 등록을 취소합니다.

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

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