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

  • 相关阅读:
    UML之对象图
    android5.0(Lollipop) BLE Peripheral牛刀小试
    自己定义msi安装包的运行过程
    高速排序
    字符串函数---strcat()与strncat具体解释及实现
    杭电(hdu)1181 变形课
    电脑突然死机,编译报错dll缺少依赖项
    谈谈java垃圾回收机制
    swift(2)元祖(Tuple)
    IOS小工具以及精彩的博客
  • 原文地址:https://www.cnblogs.com/richxan/p/15943746.html
Copyright © 2020-2023  润新知