我試圖使用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 關注
- 141 瀏覽
添加回答
舉報
0/150
提交
取消