为了账号安全,请及时绑定邮箱和手机立即绑定

gin golang:什么是 gin.Context.Keys

gin golang:什么是 gin.Context.Keys

Go
一只甜甜圈 2022-10-24 09:19:32
我试图使用go-gincontext.GetBool框架中的方法(here)和一些查询参数。它不能作为例外工作,我认为它不是由查询参数填充的。Context.Keys所以我的问题是:什么是gin.Context.Keys,以及在发出请求时应该如何填充?PS:这个问题已经在这里问过了,但是没有正确的答案。
查看完整描述

1 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

tl;drKeys字段支持 Gin 的 Contextcontext.Context接口实现作为请求范围的键/值载体。


我认为 Context.Keys 不是由查询参数填充的。

正确的。Context.Keys与查询参数无关。查询参数可用于Context.Query.

相反Keys,结构字段上的文档显示:

Keys 是专门用于每个请求上下文的键/值对。

这些键/值对可以通过Get和访问Set。后一个的文档是:

Set 用于专门为此上下文存储新的键/值对。如果之前没有使用它,它也会延迟初始化 c.Keys。

因此该字段类似于context包的Context.WithValueContext.Value,例如请求范围的参数。Gin 的上下文Keys是存储原始键/值对的导出映射。诸如此类的方法GetBool很方便,因为您不必interface{}自己对值进行类型断言。

与其他 Web 框架不同,Gin 的 Context 不包装context.Context值(除了c.Request.Context),而是直接实现接口。这包括Value方法本身,它也访问底层Keys字段。

顺便说一句,与标准 libcontext实现的一个重要区别是context.Context接受interface{}键,而 Gin 的 Context 只接受string键。


查看完整回答
反对 回复 2022-10-24
  • 1 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信