Go 是一种包含电池的编程语言,并且已经内置了一个 Web 服务器。标准库中的 net/http
包含了有关 HTTP 协议的所有功能。其中包括(除其他许多内容外)一个 HTTP 客户端和一个 HTTP 服务器。在此示例中,你将了解创建可以在浏览器中查看的 Web 服务器是多么简单。
首先,创建一个处理程序,该处理程序接收来自浏览器、HTTP 客户端或 API 请求的所有传入 HTTP 连接。Go 中的处理程序是一个具有此签名的函数
func (w http.ResponseWriter, r *http.Request)
该函数接收两个参数
http.ResponseWriter
,你可以在其中写入文本/html 响应。http.Request
,其中包含有关此 HTTP 请求的所有信息,包括 URL 或标头字段等内容。向默认 HTTP 服务器注册请求处理程序就像这样简单
http.HandleFunc("/", func (w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, you've requested: %s\n", r.URL.Path)
})
仅请求处理程序不能接受来自外部的任何 HTTP 连接。HTTP 服务器必须侦听端口才能将连接传递给请求处理程序。由于在大多数情况下端口 80 是 HTTP 流量的默认端口,因此此服务器也将侦听该端口。
以下代码将启动 Go 的默认 HTTP 服务器并在端口 80 上侦听连接。你可以将浏览器导航到 http://localhost/
并查看服务器处理你的请求。
http.ListenAndServe(":80", nil)
这是你可以用来尝试在此示例中学习到的内容的完整代码。
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, you've requested: %s\n", r.URL.Path)
})
http.ListenAndServe(":80", nil)
}