@@ -109,47 +109,47 @@ handler是一个接口,但是前一小节中的`sayhelloName`函数并没有
109
109
110
110
- 首先调用Http.HandleFunc
111
111
112
- 按顺序做了几件事:
112
+ 按顺序做了几件事:
113
113
114
- 1. 调用了DefaultServerMux的HandleFunc
114
+ 1 调用了DefaultServerMux的HandleFunc
115
115
116
- 2. 调用了DefaultServerMux的Handle
116
+ 2 调用了DefaultServerMux的Handle
117
117
118
- 3. 往DefaultServeMux的map[string]muxEntry中增加对应的handler和路由规则
118
+ 3 往DefaultServeMux的map[string]muxEntry中增加对应的handler和路由规则
119
119
120
120
- 其次调用http.ListenAndServe(":9090", nil)
121
121
122
- 按顺序做了几件事情:
122
+ 按顺序做了几件事情:
123
123
124
- 1. 实例化Server
124
+ 1 实例化Server
125
125
126
- 2. 调用Server的ListenAndServe()
126
+ 2 调用Server的ListenAndServe()
127
127
128
- 3. 调用net.Listen("tcp", addr)监听端口
128
+ 3 调用net.Listen("tcp", addr)监听端口
129
129
130
- 4. 启动一个for循环,在循环体中Accept请求
130
+ 4 启动一个for循环,在循环体中Accept请求
131
131
132
- 5. 对每个请求实例化一个Conn,并且开启一个goroutine为这个请求进行服务go c.serve()
132
+ 5 对每个请求实例化一个Conn,并且开启一个goroutine为这个请求进行服务go c.serve()
133
133
134
- 6. 读取每个请求的内容w, err := c.readRequest()
134
+ 6 读取每个请求的内容w, err := c.readRequest()
135
135
136
- 7. 判断handler是否为空,如果没有设置handler(这个例子就没有设置handler),handler就设置为DefaultServeMux
136
+ 7 判断handler是否为空,如果没有设置handler(这个例子就没有设置handler),handler就设置为DefaultServeMux
137
137
138
- 8. 调用handler的ServeHttp
138
+ 8 调用handler的ServeHttp
139
139
140
- 9. 在这个例子中,下面就进入到DefaultServerMux.ServeHttp
140
+ 9 在这个例子中,下面就进入到DefaultServerMux.ServeHttp
141
141
142
- 10. 根据request选择handler,并且进入到这个handler的ServeHTTP
142
+ 10 根据request选择handler,并且进入到这个handler的ServeHTTP
143
143
144
144
mux.handler(r).ServeHTTP(w, r)
145
145
146
146
11 选择handler:
147
147
148
- A. 判断是否有路由能满足这个request(循环遍历ServerMux的muxEntry)
148
+ A 判断是否有路由能满足这个request(循环遍历ServerMux的muxEntry)
149
149
150
- B. 如果有路由满足,调用这个路由handler的ServeHttp
150
+ B 如果有路由满足,调用这个路由handler的ServeHttp
151
151
152
- C. 如果没有路由满足,调用NotFoundHandler的ServeHttp
152
+ C 如果没有路由满足,调用NotFoundHandler的ServeHttp
153
153
154
154
## links
155
155
* [ 目录] ( < preface.md > )
0 commit comments