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 服务器了。
推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

file


移动安全星球
1 声望2 粉丝