2016-11-08 7 views
4

나는 golang을 연구 해왔고 많은 사람들이 http.NewServeMux() 기능을 사용하여 서버를 만들었다는 것을 알았지 만 실제로 어떤 일이 일어나는지 이해하지 못합니다. 이동 ServeMux에서http 요청 멀티플렉서 란 무엇입니까?

는 HTTP 요청 다중 화기 :

나는 이것을 읽을. 들어오는 각 요청을 의 URL과 등록 된 패턴 목록에 일치시키고 URL과 가장 근접한 패턴에 대한 처리기 을 호출합니다.

http.ListenAndServe(addr, nil) 
http.Handle("/home", home) 
http.Handle("/login", login) 

멀티플렉싱을 사용하는 목적은 무엇인가 :

방법은 단지 같은 것을하는 것보다 그 차이가?

+7

이렇게하면 멀티플렉서 즉, http.DefaultServeMux가 사용됩니다. – hobbs

+0

ListenAndServe는 ** 두 번째 매개 변수로 ** nil **을 전달하면 http.DefaultServeMux를 사용합니다. –

+0

요청 멀티플렉서를 요청 라우터라고도합니다. 일부 규칙 세트를 사용하여 수신 요청을 핸들러로 라우트합니다. –

답변

3

net/http GoDoc 및 원본. 당신이 http.Handle 전화 DefaultServeMux 내부를 볼 수 있듯이

ListenAndServe starts an HTTP server with a given address and handler. The handler is usually nil, which means to use DefaultServeMux. Handle and HandleFunc add handlers to DefaultServeMux

DefaultServeMuxhttp.ServeMux

var DefaultServeMux = &defaultServeMux 
var defaultServeMux ServeMux 

그냥 미리 정의입니다.

func Handle(pattern string, handler Handler) { DefaultServeMux.Handle(pattern, handler) }

http.NewServeMux()의 목적은 다른 경로와 다른 포트를 듣고 두 http.ListenAndServe을 기능을 필요로 할 때처럼 인스턴스 http.Servermux의 자신의 인스턴스를하는 것입니다.