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!