在Go中,搭建一个http server简单到令人难以置信。只需要引入net/http包,写几行代码,一个HTTP服务器就可以正常运行并接受访问请求。
下面就是Go最简单的HTTP服务器:
package main
import (
"fmt"
"net/http"
)
func myfunc(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "hi")
}
func main() {
http.HandleFunc("/", myfunc)
http.ListenAndServe(":8080", nil)
}
编译运行程序,然后打开浏览器访问 http://localhost:8080/ , 我们可以看到网页输出"hi" ! 就这么简单,我们实现了一个HTTPserver!
下面我们通过分析net/http的源代码,来深入理解这个包的实现原理。在net/http源代码中,我们可以深深体会到Go语言的结构体(以及自定义类型)、接口、方法简单组合的设计哲学。这个包最主要的文件有4个,分别是: client.go server.go request.go response.go
这四个文件也分别代表了http中最重要的4个部分,HTTP Request 请求、 HTTP Response 响应、HTTP Client客户端和HTTP Server 服务端,所以我们先从这四个方面来了解net/http包。
下一节:HTTP Request请求是由客户端发出的消息, 用来使服务器执行动作.发出的消息包括起始行, Headers, Body。