概述
Go 自带的 http 包很强大,通过它可以轻松构建个简单的 http 服务。
ListenAndServe
ListenAndServe 方法可以开启一个 HTTP 服务,这个函数接收 一个地址,和一个 handler 。一般情况下,第二个参数 handler 写成 nil,也就是 使用默认的 DefaultServeMux。
通过 Handle 方法 和 HandleFunc 方法,可以添加 许多handler 到 这个默认的DefaultServeMux。示例:
http.Handle("/foo", fooHandler)
http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
})
log.Fatal(http.ListenAndServe(":8080", nil))
自定 Server 对象
更多控制 server 的行为的方式是 创建一个自定的 Server对象 来实现。示例:
s := &http.Server{
Addr: ":8080",
Handler: myHandler,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
MaxHeaderBytes: 1 << 20,
}
log.Fatal(s.ListenAndServe())
完整示例
package main
import (
"fmt"
"net/http"
"log"
"html"
)
func main() {
http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
})
log.Fatal(http.ListenAndServe(":8080", nil))
// 在浏览器 打开网址: http://localhost:8080/bar 即可看到
}
网友评论