目录
net/http介绍
Go语言标准库内建提供了net/http包,涵盖了HTTP客户端和服务端的具体实现。使用net/http包,我们可以很方便地编写HTTP客户端或服务端的程序。
HTTP服务端
默认的Server
首先,我们编写一个最简单的Web服务器。编写这个Web服务只需要两步:
注册一个处理器函数(注册到DefaultServeMux);
设置监听的TCP地址并启动服务;
对应到我们的代码里就是这样的:
package main
import (
"fmt"
"net/http"
)
//say hello to the world
func sayHello(w http.ResponseWriter, r *http.Request) {
//n, err := fmt.Fprintln(w, "hello world")
_, _ = w.Write([]byte("hello world"))
}
func main() {
//1.注册一个处理器函数
http.HandleFunc("/", sayHello)
//2.设置监听的TCP地址并启动服务
//参数1:TCP地址(IP+Port)
//参数2:handler handler参数一般会设为nil,此时会使用DefaultServeMux。
err := http.ListenAndServe("127.0.0.1:9000", nil)
if err != nil {
fmt.Printf("http.ListenAndServe()函数执行错误,错误为:%v\n", err)
return
}
}
运行该程序,通过浏览器访问,可以看到hello world
显示在了浏览器页面上
ListenAndServe使用指定的监听地址和处理器启动一个HTTP服务端。处理器参数通常是nil,这表示采用包变量DefaultServeMux作为处理器。
Handle和HandleFunc函数可以向DefaultServeMux添加处理器。
http.HandleFunc
使用Go语言中的net/http
包来编写一个简单的接收HTTP请求的Server端示例,net/http
包是对net包的进一步封装,专门用来处理HTTP协议的数据。具体的代码如下:
处理器函数的实现原理:
通过源码可知,这个函数实际上是调用了默认的serveMux的handleFunc方法, 这也解释了我们第一步里所说的默认的实际注册到DefaultServeMux