gin静态测试中获取gin.Context


目录

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两种属性的结构体数组


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM