Depot
Depot 用於儲存單次請求處理過程中的臨時資料。中介軟體可將自身處理的臨時資料存入 Depot,供後續程式使用。
當伺服器接收來自客戶端瀏覽器的請求時,會建立一個 Depot 實例。此實例將在所有中介軟體與 Handler 完成請求處理後被銷毀。
舉例而言,我們可在登入中介軟體中設定 current_user,並在後續中介軟體或 Handler 中讀取當前使用者資訊。
快速理解
Depot 用於在請求處理過程中儲存與共享資料。它實作了型別安全的資料容器,支援兩種主要使用模式:
- 鍵值儲存:透過
insert/get方法存取與字串鍵關聯的值 - 型別注入:透過
inject/obtain方法基於型別存取值
如範例所示,Depot 特別適用於在中介軟體與處理程式之間傳遞資料。中介軟體可在 Depot 中設定值(如使用者資訊、認證狀態),後續處理程式可取得這些值,無需重複計算或查詢。Depot 的設計確保了在整個請求處理鏈中資料的一致性與可存取性,是建構複雜 Web 應用的核心工具。
透過 insert 與 get 設定及取出資料
如上所示,可透過 insert 將 key 與 value 插入 Depot。對此類型的值,可直接使用 get 取出。
若指定的 key 不存在,或 key 存在但型別不符,則回傳 None。
透過 inject 與 obtain 設定及取出資料
有時存在某些不需關聯具體 key,且該型別僅需唯一實例的情況。此時可使用 inject 插入資料,並以 obtain 取出資料。此方法無需提供 key。