go标准库---net/http服务端

1、http简单使用

go的http标准库非常强大,调用了两个函数就能够实现一个简单的http服务:

func HandleFunc(pattern string, handler func(ResponseWriter, *Request))
func ListenAndServe(addr string, handler Handler) error

handleFunc注册一个路由和相应的处理函数,第一个参数表示注册的路由,第二个参数表示注册路由对应的处理函数;ListenAndServe用来启动http服务并监听,第一个参数是服务器地址,第二个参数表示使用的处理器。

下面是用这两个函数实现的简单的http服务:注册了一个“/”路由的处理函数,并在8080端口启动http服务,ListenAndServe第二个参数为空表示使用标准库默认的处理器,也可使用自定义处理器,传参即可。处理器的概念在下面标准库分析中进行介绍。

import (
    "net/http"
)


func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        // TODO
    })


    http.ListenAndServe(":8080", nil)
}

2、http标准库分析

根据上面的两个函数来对http标准库展开分析

2.1、服务端数据结构

首先介绍下这两个函数涉及到的数据类型

(1)服务器对象,其中最核心的是Handler成员,表示整个http服务的路由器,存储路由路径对应到处理函数的映射,可自定义,例如第1小姐中的案例,没有自定义路由器对象,就会使用标准库提供的默认对象DefaultServeMux

type Server struct {
	Addr string // 地址  host:port
	Handler Handler // 处理器对象或路由器
    // ...
}

(2)Handler是一个接口,提供了ServeHTTP方法,用来将路由映射到相应的处理函数上

type Handler interface {
	ServeHTTP(ResponseWriter, *Request)
}

(3)路由器对象ServeMux,用来存储路由到处理函数的映射关系,该对象就是Handler接口的具体实现。

type serveMux struct {
	mu    sync.RWMute
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值