net/http에서 등록 취소 처리
net/http의 HTTP 처리기를 동적으로 등록 및 등록 취소하여 요청 처리에 유연성을 제공할 수 있습니다. 핸들러 등록을 취소하려면 사용자 정의 ServerMux를 생성할 수 있습니다.
사용자 정의 ServerMux 구현
Go 소스 코드(GOROOT/src/pkg)에서 ServerMux용 코드를 복사합니다. /net/http/server.go, 라인 837-939). 사용자 정의 ServerMux에 Deregister 메소드를 추가하여 패턴-핸들러 매핑에서 핸들러를 제거합니다.
<code class="go">func (mux *MyMux) Deregister(pattern string) error { mux.mu.Lock() defer mux.mu.Unlock() del(mux.m, pattern) return nil }</code>
Usage
사용자 정의 ServerMux의 인스턴스를 생성하고 평소와 같이 "/create" 경로를 처리합니다:
<code class="go">mux := newMux() mux.Handle("/create", &factory)</code>
사용자 정의 ServerMux를 HTTP 서버의 핸들러로 설정:
<code class="go">srv := &http.Server { Addr: localhost:8080 Handler: mux, }</code>
등록 취소
핸들러 등록을 취소하려면 ServerMux에서 Deregister 메소드를 호출하면 됩니다.
<code class="go">mux.Deregister("/123/*")</code>
이렇게 하면 서버의 라우팅 동작이 수정되고 "/123/*"에 대한 후속 요청은 더 이상 이루어지지 않습니다. 이전에 등록된 핸들러에 의해 처리됩니다.
안전한 수정
다른 고루틴에서 deregister()를 호출하여 ServerMux를 수정하는 것은 안전하며 서버의 라우팅 로직을 업데이트합니다.
위 내용은 Go의 net/http에서 HTTP 핸들러 등록을 취소하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!