前言
有一定 go 使用经验的人应该知道,context
在 go 的 web
开发中往往代表着一个请求的上下文。
作为开发者,我们可以通过这个 context
实例,实现对请求
goroutine 链条的管理,比如请求的超时控制等等。
不过,net/http
里面的 ServeHTTP
方法只是给了开发者两个参数,一个是
http.ResponseWriter
,是用来返回响应给客户端用的,另一个是
*http.Request
,是用来获取请求信息的。但实际上
*http.Request
包含了请求相关的 context
,这个
context
就是整个请求最初的那个 context
。
对于 Web 开发来说,有了 http.ResponseWriter
和
*http.Request
这两个参数也足够了。但是想要更高效地进行应用开发,我们往往需要在此基础上再封装一下。
在 gin 里面,也对 baseContext 进行了一定的扩展吧,应该这么说,实现了很多 Web 基础功能,比如参数获取、中间件、参数验证等等。
gin.context 思维导图
看不清可以右键在新页面打开.