我試圖使用帶有一些查詢引數的go-gin框架中的方法context.GetBool(here)。它不能作為例外作業,我認為它沒有被查詢引數填充。Context.Keys
所以我的問題是:什么是gin.Context.Keys,以及在提出請求時應該如何填充?
PS:這里已經有人問過這個問題,但沒有得到正確的答案。
uj5u.com熱心網友回復:
tl;dr該Keys欄位支持 Gincontext.Context介面的 Context 實作作為請求范圍的鍵/值載體。
我認為 Context.Keys 不是由查詢引數填充的。
正確的。Context.Keys與查詢引數無關。查詢引數可用于Context.Query.
關于Keys替代,在結構領域的檔案內容:
Keys 是專門用于每個請求背景關系的鍵/值對。
這些鍵/值對可以通過Get和訪問Set。后一個的檔案是:
Set 用于專門為此背景關系存盤新的鍵/值對。如果之前沒有使用過,它也會延遲初始化 c.Keys。
因此該欄位類似于context包的Context.WithValueand Context.Value,例如請求范圍的引數。Gin 的背景關系Keys是存盤原始鍵/值對的匯出映射。諸如此類的方法GetBool很方便,因為您不必interface{}自己對值進行型別斷言。
與其他 Web 框架不同,Gin 的 Context 不包裝context.Context值(除了c.Request.Context),而是直接實作介面。這包括Value方法本身,它也訪問基礎Keys欄位。
順便說一下,與標準 libcontext實作的一個重要區別是它context.Context接受interface{}鍵,而 Gin 的 Context 只接受string鍵。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/398115.html
