1. 创建Web Server
http.ListenAndServe,函数有2个参数,
第一个参数是网络地址,如果是空字符串,那么代表接收所有网络接口的TCP 80端口,
第二个参数是Handler,如果是nil,就代表是默认的DefaultServeMux。DefaultServeMux是multiplexer多路复用器,可以当做路由。
做一个例子
运行
执行结果
为什么执行后显示404呢?
因为默认的地址是“/”,我们还没有设置路由,因此显示404
2. 另外一种创建web server的方法
http.Server是结构体类型,
Addr字段,默认是“”,表示网络地址,如果是“”空字符串,代表接收所有网络接口的TCP 80 端口
Handler字段:默认是nil,代表使用DefaultServeMux
ListenAndServe()函数:表示启动http服务。
上面的代码进行修改一下
运行
执行结果
和第1种方法执行效果是一样的,但是第2种更加方便。
3. Handler
Handler是一个接口。
可以看到,Handler中有1个ServeHTTP()方法,有2个参数,第一个是ResponseWriter,第二个是Request的struct指针。Request有多个字段,Method、URL、Proto、Header、Body、Form等20个字段。
什么是DefaultServeMux?
DefaultServeMux是一个Multiplexer,也称多路复用器,同时也是handler,可以把DefaultServeMux看做是一个总入口handler,
将上面的例子进行改装一下,获取客户端的IP地址和端口号
6行:Handler1 自定义一个handler结构体
9行:重写ServeHTTP方法,传递2个参数http.ResponseWriter和*http.Request
10行:返回给客户端的IP地址和端口
16行:声明1个变量,为handler结构体的指针
18行:重写http.Server结构体
20行:代表所有接口的80端口,也可以写成""
22行:将handler结构体的指针传给Handler字段
25行:启动http服务器
本文暂时没有评论,来添加一个吧(●'◡'●)