在上篇教程中,我们创建了第一个 Go Web 应用,这篇教程我们来简单分析下基于 Go 语言编写的 Web 应用底册是如何处理 HTTP 请求的。
1、工作流程
客户端发起的 HTTP 请求是通过 Go 语言实现的 HTTP 服务器监听、接收、处理并返回响应的,这个 HTTP 服务器底层工作流程如下:
创建 Listen Socket,监听指定的端口,等待客户端请求到来;
Listen Socket 接收客户端的请求,得到 Client Socket,接下来通过 Client Socket 与客户端通信;
处理客户端的请求,首先从 Client Socket 读取 HTTP 请求的协议头, 如果是 POST 方法, 还可能要读取客户端提交的数据,然后交给相应的 Handler(处理器)处理请求,Handler 处理完毕后装载好客户端需要的数据,最后通过 Client Socket 返回给客户端。
上述流程对应的是上一篇 server.go
源码中的如下这两行代码:
http.HandleFunc("/", sayHelloWorld)err := http.ListenAndServe(":9091", nil)
如果与基于 Nginx + PHP-FPM 驱动的 P