여러 http.ServeMux 인스턴스 결합
동일한 네트워크 주소 및 포트에서 여러 http.ServeMux 인스턴스를 제공하려면 CombinedMux 기능을 사용하세요. 다음과 같이 구현됩니다:
<code class="go">func combineMux(muxes ...*http.ServeMux) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { var h http.Handler for _, mux := range muxes { if h = mux.Handler(r); h != nil { h.ServeHTTP(w, r) return } } http.NotFound(w, r) }) }</code>
이 함수는 제공된 ServeMux 인스턴스를 반복하고 지정된 요청에 대해 첫 번째로 일치하는 핸들러를 제공하는 새로운 http.Handler를 생성합니다. 아무 것도 발견되지 않으면 404 찾을 수 없음 응답이 반환됩니다.
대체 접근 방식: ServeMux 인스턴스 중첩
동일한 결과를 얻는 또 다른 방법은 ServeMux를 중첩하는 것입니다. 서로의 인스턴스. 이는 http.ServeMux가 http.Handler 인터페이스를 구현하기 때문에 가능합니다.
예를 들어, 다음 접근 방식을 사용하여 동일한 포트와 호스트에서 muxA와 muxB를 제공하려면:
<code class="go">rootMux := http.NewServeMux() rootMux.Handle("/muxa/", muxA) rootMux.Handle("/muxb/", muxB) http.ListenAndServe(":8080", rootMux)</code>
여기서 이 경우 rootMux는 루트 URL에 대한 모든 요청을 처리하고 /muxa/ 및 /muxb/에 대한 요청을 해당 ServeMux 인스턴스에 위임합니다. 각 중첩된 ServeMux는 자체 하위 경로 접두사(예: muxA의 경우 /muxa/)를 처리해야 합니다.
위 내용은 동일한 포트에서 여러 http.ServeMux 인스턴스를 결합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!