摒弃世俗浮躁
追求技术精湛

Golang笔记(一):启动一个新的web服务

先抛出完整代码:

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

赞(2) 打赏
未经允许不得转载:时光日记 » Golang笔记(一):启动一个新的web服务

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏