HTTP,全称为 Hypertext Transfer Protocol,是一种用于传输超文本的协议。超文本可以包含文字,图片,视频,音频等多种类型的数据,这使得 HTTP 成为了 Web 的基础。
HTTP 协议基于请求-响应模型。客户端(例如浏览器)发送一个请求到服务器,服务器处理请求并返回一个响应。
HTTP 请求
一个 HTTP 请求主要由以下部分组成:
- 请求行:包括 HTTP 方法(GET、POST、PUT、DELETE 等)、请求的 URL 和 HTTP 版本。
- 请求头:包含一些元数据,如 User-Agent、Accept-Language、Content-Type 等。
- 请求体:对于 POST 或 PUT 请求,请求体中包含了要发送到服务器的数据。
HTTP 响应
一个 HTTP 响应主要由以下部分组成:
- 状态行:包括 HTTP 版本、状态码(200、404、500等)和状态文本(OK、Not Found、Internal Server Error等)。
- 响应头:包含一些元数据,如 Content-Type、Content-Length、Server 等。
- 响应体:包含了服务器返回的数据。
Go 中的 HTTP 服务器
在 Go 中,你可以使用 net/http 包来创建 HTTP 服务器。下面是一个最简单的 HTTP 服务器:
package main
import (
"fmt"
"net/http"
)
func helloHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello, World!")
}
func main() {
http.HandleFunc("/", helloHandler)
http.ListenAndServe(":8080", nil)
}
在这个例子中,我们首先定义了一个处理函数 helloHandler,它接收一个 http.ResponseWriter 和一个 http.Request 参数。http.ResponseWriter 用于写入 HTTP 响应,http.Request 代表了 HTTP 请求。
然后,我们使用 http.HandleFunc 函数将 helloHandler 关联到 URL 路径 /。这意味着当我们访问 http://localhost:8080/ 时,helloHandler 函数将被调用。
最后,我们使用 http.ListenAndServe 开始监听并在 :8080 端口服务 HTTP 请求。
HTTP 协议是 Web 的基础,理解 HTTP 协议将帮助你更好地理解 Web 的工作原理。在 Go 中,net/http 包提供了强大的工具来处理 HTTP 请求和响应,使得构建 Web 服务器变得非常简单。
推荐阅读: