创建一个简单的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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!