创建一个简单的web服务器
创建一个简单的web服务器
首先我们需要知道一个简单的web过程是什么?
客户端和服务器
客户端向服务器发送用户请求
服务器接收到请求后,对请求进行处理
服务器处理完请求后,将回复发送给客户端
因此服务器需要一个处理请求的能力,而如何处理这个请求是可以由开发者自己设置的
创建一个handlerFunc函数用于处理客户请求,代码如下:
func handlerFunc(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "<h1>Hello, 这里是 goblog!</h1>")
}
可以看到这个函数有两个参数,分别是http.ResponseWriter和http.Request。前者是回复体,后者是请求体,我们获取r的内容,根据他的内容逻辑来进行处理不同的回复,例如可以捕捉r的URL路径,根据不同的路径来进行不同的逻辑处理。代码如下:
func handlerFunc(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/" {
fmt.Fprint(w, "<h1>Hello, 这里是 goblog!</h1>")
} else if r.URL.Path == "/about" {
fmt.Fprint(w, "此博客是用以记录编程笔记,如您有反馈或建议,请联系 "+"<a href=\"mailto:summer@example.com\">summer@example.com</a>")
} else {
fmt.Fprint(w, "<h1>请求页面未找到 :</h1>"+
"<p>如有疑惑,请联系我们。</p>")
}
}
主函数如何设置?http.HandleFunc
是 Go 标准库 net/http
中的一个核心函数,用于将 URL 路径与处理函数绑定,当用户访问该路径时,自动调用对应的函数处理 HTTP 请求http.ListenAndServe
是 Go 标准库 net/http
中用于启动 HTTP 服务器的核心函数,它会阻塞当前程序,监听指定地址和端口,处理传入的 HTTP 请求。第二个参数为处理 HTTP 请求 对每个传入的 HTTP 请求,调用 handler 处理(若 handler 为 nil,则使用 http.DefaultServeMux)。
func main() {
http.HandleFunc("/", handlerFunc)
http.ListenAndServe(":3000", nil)
}
http.HandleFunc
:注册路由到默认的 DefaultServeMu
http.ListenAndServe
:启动服务器并调用路由处理器
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: