先抛出完整代码:
func handlerFunc(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/html; charset=UTF-8")
...这里部分代码省略...
}
func main() {
http.HandleFunc("/", handlerFunc)
http.ListenAndServe(":3000", nil)
return
}
服务启动
http.HandleFunc("/", handlerFunc)
http.ListenAndServe(":3000", nil)
go的web server服务是在net/http标准库里面,在启动web服务监听之前,我们需要先调用http库的HandleFunc函数,准备将请求交给指定的函数做进一步处理。(注意:这里的 / 不代表网站的相对根路径!)
http标准库的ListenAndServe函数字如其名”启动监听服务“,第一个参数代表要监听3000这个端口,第二个参数可以传入一个实现了Handler接口的handle,如果为nil则会使用DefaultServeMux。另外该函数返回nil则视为启动监听成功,反之是错误信息。
http.handle和http.handleFunc
func Handle(pattern string, handler Handler)
func HandleFunc(pattern string, handler func(ResponseWriter, *Request))
Handle和HandleFunc最终都调用DefaultServeMux对应的方法,而DefaultServeMux是ServeMux的实例,ServeMux实现了Handler接口,归根结底,HandleFunc最终还是调用了Handle方法。
参考代码: src/net/http/server.go:2496
// HandleFunc registers the handler function for the given pattern.
func (mux *ServeMux) HandleFunc(pattern string, handler func(ResponseWriter, *Request)) {
if handler == nil {
panic("http: nil handler")
}
mux.Handle(pattern, HandlerFunc(handler))
}
TIPS:平时通常都是用HandleFunc,如果非得用Handle,那么去把Handler接口实现了即可。
http.ResponseWriter和*http.Request
http.ResponseWriter用于处理网页response请求,实现了 io.Writer 接口类型
而*http.Request是用于获取网页的Request
启动文档服务
在项目根目录执行下面的命令,然后访问 http://localhost:6060
$ godoc -http=:6060
评论前必须登录!
注册