Go的Http链路源码分析
2018-02-05HelloWorld
package main
import (
"net/http"
"fmt"
)
func main() {
http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
fmt.Fprintf(writer, "Hello World.\n")
})
http.ListenAndServe(":9090", nil)
}
运行 & localhost:9090 浏览器将输出
Hello World
可以看到Go写一个Web Server非常简单
- Http请求的流程图如下
- Http的源码逻辑流程如下
- 下面将从源码的角度分析go的http请求整个链路的完整过程
有一个表单姓名username, 获取方式
request.Form["username"]
,若在url后加 xxx&username=xxx,则依然能获取到url上的数据,key唯一的情况下,获取数据需先判断是那种http的method
,比如表单是POST,然后再进行获取数据,否则可能出现脏数据情况