创建一个基于 HTTP 协议的 Web 服务
构建一个最简单的 HTTP 服务,当收到一个 HTTP 请求后,给请求方返回包含“hello, world”数据的响应。
main.go
package main
import "net/http"
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request){
w.Write([]byte("hello, world"))
})
http.ListenAndServe(":8080", nil)
}
func(w http.ResponseWriter, r *http.Request),第二个参数 r 代表来自客户端的 HTTP 请求,第一个参数 w 则是用来操作返回给客户端的应答的。
http 包提供的 ListenAndServe 函数,建立起一个 HTTP 服务,这个服务监听本地的 8080 端口。客户端通过这个端口与服务建立连接,发送 HTTP 请求就可以得到相应的响应结果。
在这个例子中,所有来自客户端的请求,无论请求的 URI 路径(RequestURI)是什么(比如http://localhost:8080/dsdfaf),请求都会被设置的处理函数处理。为什么会这样呢?
通过 http.HandleFunc 设置这个处理函数时,传入的模式字符串为“/”。HTTP 服务器在收到请求后,会将请求中的 URI 路径与设置的模式字符串进行最长前缀匹配,并执行匹配到的模式字符串所对应的处理函数。在这个例子中,仅设置了“/”这一个模式字符串,并且所有请求的 URI 都能与之匹配,自然所有请求都会被设置的处理函数处理。
此文章为2月Day11学习笔记,内容来源于学习完极客时间《Tony Bai · Go 语言第一课》后自行拓展,强烈推荐该课程! 开启更多功能,提升办公效能
另外,最近重温操作系统时发现了一个免费精品好课,闪客的《Linux0.11源码趣读》,这个课给我感觉像在用看小说的心态学操作系统源码,写的确实挺牛的,通俗易懂,直指本源,我自己也跟着收获了很多。 这个课在极客时间上是免费的,口碑很不错,看评论下很多人在催更和重温,强烈推荐!
戳此链接领取:time.geekbang.org/opencourse/…
或通过下面海报领取👇🏻!