Go 的 net/http 包是用于处理 HTTP 请求和响应的主要工具。它提供了一系列的函数和类型,可以帮助你构建强大的 Web 服务器。
http.ListenAndServe
http.ListenAndServe 是一个方便的函数,它创建一个 HTTP 服务器并开始监听指定的端口。这个函数接收两个参数:监听的端口和处理请求的 Handler。如果 Handler 为 nil,则使用默认的 DefaultServeMux。
例如:
http.ListenAndServe(":8080", nil)
http.HandleFunc 和 http.HandlerFunc
http.HandleFunc 是一个方便的函数,它将一个函数注册到默认的 ServeMux,使得这个函数可以处理指定 URL 路径的请求。这个函数的第一个参数是 URL 路径,第二个参数是处理请求的函数。处理请求的函数应该接收 http.ResponseWriter 和 *http.Request 类型的参数。
例如:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello, World!")
})
http.HandlerFunc 是一个类型,它包装了处理请求的函数,使其符合 http.Handler 接口。
例如:
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello, World!")
})
http.Request
http.Request 是一个类型,它代表了一个 HTTP 请求。你可以从 *http.Request 对象中获取到请求行、请求头和请求体的信息。
例如:
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Println("Method:", r.Method)
fmt.Println("URL:", r.URL)
fmt.Println("Header:", r.Header)
body, _ := ioutil.ReadAll(r.Body)
fmt.Println("Body:", string(body))
}
http.ResponseWriter
http.ResponseWriter 是一个接口,它提供了写入 HTTP 响应的方法。你可以使用 http.ResponseWriter 写入状态码、响应头和响应体。
例如:
func handler(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(200)
w.Header().Set("Content-Type", "text/plain")
w.Write([]byte("Hello, World!"))
}
这就是 Go 的 net/http 包的基本使用。了解这些基本的函数和类型,你就可以开始构建你的第一个 Web 服务器了。
推荐阅读: