7.4. 使用http包
下面是一个完整的web server例子:
package main
import (
"fmt"
"http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
在main函数中,http.HandleFunc设置所有对根目录请求的处理函数为handler。
然后调用http.ListenAndServe,在8080端口开始监听(第二个参数暂时可以忽略)。然后程序将阻塞,直到退出。
函数handler为http.HandlerFunc类型,它包含http.Conn和http.Request两个类型的参数。
其中http.Conn对应服务器的http连接,我们可以通过它向客户端发送数据。
类型为http.Request的参数对应一个客户端请求。其中r.URL.Path 为请求的地址,它是一个string类型变量。我们用[1:]在Path上创建 一个slice,对应"/"之后的路径名。
启动该程序后,通过浏览器访问以下地址:
http://localhost:8080/monkeys
会看到以下输出内容:
Hi there, I love monkeys!