go自带基本的http系统,开源的go web服务相关的框架大多是基于此进行的扩展延伸,比如以快速小巧著称的gin,国人写的beego等,以及爬虫框架colly都是基于此。我们今天聊聊这个http库怎么简单的写一个http服务。

我们今天只是简答的实现一个server并不会去添加路由session cookie等的控制……

go启动一个server服务异常的简单,短短数行代码即可

上问是官方的定义,我们可以直接拿来用

一句话启动起来一个服务,由于我们没有添加Handler所以是无法响应服务的,我们接下来添加一个handler,在此之前我们看看所谓的Handler是个什么东东?

从定义来看,Handler是个接口,因此我们可以定义一个实体struct或者一个函数均可以用于响应数据

然后我们看看网络发起请求之中都包含什么

req已经为我们封装好了,必要的数据,我们可以从中获取到用户发送的数据请求,然后进行处理。对于有路由层的框架就可以根据此机型路由映射控制,内部进行数据分发。看看我们的gin是如何走的

我们看到gin将用户的req保存在context中,然后engine来根据请求进行处理,而图中的t:=engin.trees就是route路由组成的二叉树然后进行最大匹配,最后将请求数据分发给对应的响应Handler(当然了,route不是我们的讲解范围啦)