Go web:Gorilla

Gorilla

Gorilla context

context存储在request整个生命周期的数据存储。

http.request 中封装了一个context.Context

Gorilla 的context提供的一种对http.request中的context.Context的set,get,delete的支持。

Gorilla http or http/client

http high level的API

http

http中封装一个一个DefaultClient

提供了Post,Get,Delete等请求,值需要把对应请求的内容写入即可。

最终调用的是DefaultClinet的Get和Post方法

Client

Client 对外提供的方法肯定是作为一个http client需要提供的方法,比如Get,Put,等等。

但是其中的与http server的conn,以及通过conn进行发送request和接受response,
应该是封装起来的。

Client中用于维护Conn的是Dialer,Dialer的功能是负责获得一个对应的Conn。
所以每一个Dialer实例都是可以维护多个addr对应的多个Conn,因为一个Conn只能交给一个线程
去使用,所有Dialer中需要维护Conn的安全性,不能把同一个Conn交给不同的线程使用。

重点:Dialer的实现其实就是一个Conn pool,pool中一个addr对应的是多个Conn同时存在。
所以Dialer要维护对同一个addr的Conn的get和release的操作(从pool中拿去,返回pool中)

工具类:提供将非结构化的数据转化为request,和将response转化为非结构化的数据的功能。
同样的功能需要提供给header

Conn

Conn是一个接口,其提供的就是与http server进行真正网络通信的结构体。
并且提供了对request和response的解析方法,以及对本身Conn的释放的功能。

Conn的实现是对 net/conn 进行了封装,进行网络通信的内容

Dial

提供获得Conn的方法,以及对Conn进行管理

http/client low level api

设计的比较精细,就不仔细看了

Gorilla mux

实现Request的router和dispatch功能

Gorilla middleware

Gorilla reverse

你可能感兴趣的:(Go web:Gorilla)