如果❤️我的文章有帮助,欢迎点赞、关注。这是对我继续技术创作最大的鼓励。更多往期文章在我的个人博客[1]
初探 Go http 服务器源码
注册路由
注册路由 源码在 golang\src\net\http\server.go
文件
ServeMux
是一个HTTP
请求多路复用的服务器,它将每个请求 URL
与已注册路由列表
进行匹配,并调用 匹配路由
的 对应的处理程序
这里需要说明的是 handler func(ResponseWriter, *Request)
是把一个函数
作为 参数
传递给 HandleFunc
方法,实现函数的回调(闭包)
结合上面 服务端代码分析就是:
开启服务器
Serve
接受 Listener l
传入 连接
,为每一个连接创建一个新 goroutine。 服务 goroutine 读取请求并然后调用 srv.Handler 来处理响应他们。
处理连接
有了上面两步 注入路由
和 开启服务等待请求
后。 事情就简单了,就是拿着请求去匹配路由,调用路由对应方法。 这里由 ServeHTTP
将请求分发, url 匹配路由
后分派给 对应处理程序
References
[1]
更多往期文章在我的个人博客: https://coderdao.github.io/