我试图使用go-gincontext.GetBool框架中的方法(here)和一些查询参数。它不能作为例外工作,我认为它不是由查询参数填充的。Context.Keys所以我的问题是:什么是gin.Context.Keys,以及在发出请求时应该如何填充?PS:这个问题已经在这里问过了,但是没有正确的答案。
1 回答
呼如林
TA贡献1798条经验 获得超3个赞
tl;dr该Keys
字段支持 Gin 的 Contextcontext.Context
接口实现作为请求范围的键/值载体。
我认为 Context.Keys 不是由查询参数填充的。
正确的。Context.Keys
与查询参数无关。查询参数可用于Context.Query
.
相反Keys
,结构字段上的文档显示:
Keys 是专门用于每个请求上下文的键/值对。
Set 用于专门为此上下文存储新的键/值对。如果之前没有使用它,它也会延迟初始化 c.Keys。
因此该字段类似于context
包的Context.WithValue
和Context.Value
,例如请求范围的参数。Gin 的上下文Keys
是存储原始键/值对的导出映射。诸如此类的方法GetBool
很方便,因为您不必interface{}
自己对值进行类型断言。
与其他 Web 框架不同,Gin 的 Context 不包装context.Context
值(除了c.Request.Context
),而是直接实现接口。这包括Value
方法本身,它也访问底层Keys
字段。
顺便说一句,与标准 libcontext
实现的一个重要区别是context.Context
接受interface{}
键,而 Gin 的 Context 只接受string
键。
- 1 回答
- 0 关注
- 112 浏览
添加回答
举报
0/150
提交
取消