go-http

created : Tue, 02 Aug 2022 15:55:09 +0900
modified : Tue, 02 Aug 2022 16:32:57 +0900
go http

기본적인 내용

탐구

1. http 모듈에 넘겨주는 함수는 어떻게 실행되는가?

/* register step */
*http.ServeMux.HandleFunc(pattern string, handler func(ResponseWriter, *Request))
- *http.ServeMux.Handle(pattern string, handler Handler)
-- /* save muxEntry{h: handler, pattern: pattern} into mux.m[pattern] */

/* listen step */
http.ListenAndServe(addr string, handler Handler) error
- *http.Server.ListenAndServe() error
-- net.Listen(network, address string) (Listener, error)
-- *http.Server.Serve(l net.Listener) error
--- go *http.conn.serve(ctx context.Context)

/* serve step */
*http.conn.serve(ctx context.Context)
- http.serverHandler.ServeHTTP(w http.ResponseWriter, req *http.Request)
-- http.Handler.ServeHTTP(w http.ResponseWriter, req *http.Request)
--- *http.ServeMux.ServeHTTP(w http.ResponseWriter, req *http.Request)
---- ...