编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Go语言Web编程,创建web的2种方式,自定义handler

wxchong 2024-07-25 13:32:27 开源技术 18 ℃ 0 评论

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服务器

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表