目录
1. gin.Context概念
2. 创建用于测试的gin.Context
3. 如何初始化context.Params
Context的概念
通俗理解:Context就是程序(web应用)的运行环境(容器),里面存放了应用程序的所有资源(web应用相关的一些设置和全局变量),你要使用资源时就访问它,也可以存放东西。
context就是“容器”,放的就是应用程序的所有资源,要用时候就访问它,所以context里面的东西,在同一个应用程序里面是全局的;web上下文可以看成web应用的运行环境,一般用context名字来修饰,里面保存了web应用相关的一些设置和全局变量.
gin.Context是 gin 中最重要的部分。它允许我们在中间件之间传递变量, 管理流程,例如验证请求的 JSON 并呈现 JSON 响应。
gin.Context的定义
type Context struct {
// responseWriter对ResponseWriter封装
writermem responseWriter
// http请求及响应writer
Request *http.Request
Writer ResponseWriter
// 键值对切片类型
Params Params
……
}
创建用于测试的gin.Context
测试示例:
import (
"net/http/httptest"
"github.com/gin-gonic/gin"
)
func main(){
// 创建用于测试的gin.Context,Recorder是响应记录器
c, _ := gin.CreateTestContext(httptest.NewRecorder())
// 添加context的参数Params
c.Params = []gin.Param{
gin.Param{Key: "key", Value: "value"},
}
// 取出context参数params中的值
key := c.Param("key")
}
如何初始化context.Params
为什么c.Params为什么要这样初始化?
通过查阅gin源代码可以找到Params的定义,如下
type Params []Param
// Param是一个URL参数, 由key和value组成
type Param struct {
Key string
Value string
}
- Params是Param数组
- Param是包含key,value的结构体
所以Params的定义就是初始化一个包含key和value两种属性的结构体数组