Depot
Depot は、単一リクエストに関連する一時データを保存するために使用されます。ミドルウェアは、自身が処理した一時データを Depot に格納し、後続のプログラムで利用できるようにします。
サーバーがクライアントブラウザからのリクエストを受信すると、Depot のインスタンスが作成されます。このインスタンスは、すべてのミドルウェアと Handler がリクエストを処理した後に破棄されます。
例えば、ログインミドルウェアで current_user を設定し、後続のミドルウェアや Handler で現在のユーザー情報を読み取ることができます。
概要
Depot は、リクエスト処理プロセス中にデータを保存および共有するために使用されます。型安全なデータコンテナを実装しており、主に2つの使用パターンをサポートします:
- キー・バリューストア:
insert/getメソッドを使用して、文字列キーに関連付けられた値を格納・取得します。 - 型ベース注入:
inject/obtainメソッドを使用して、型に基づいて値を格納・取得します。
例が示すように、Depot は特にミドルウェアとハンドラ間でデータを受け渡すのに適しています。ミドルウェアは Depot に値(ユーザー情報、認証状態など)を設定でき、後続のハンドラはこれらの値を取得できます。これにより、再計算やクエリの繰り返しが不要になります。Depot の設計は、リクエスト処理チェーン全体でのデータの一貫性とアクセス可能性を保証し、複雑な Web アプリケーションを構築するためのコアツールです。
insert と get によるデータの設定と取得
上記のように、insert を使用して key と value を Depot に挿入できます。このタイプの値は、get を使用して直接取得できます。
指定された key が存在しない場合、または key は存在するが型が一致しない場合は、None が返されます。
inject と obtain によるデータの設定と取得
場合によっては、具体的な key に関係なく、その型に対して単一のインスタンスのみが存在するデータがあります。このような場合、inject を使用してデータを挿入し、obtain を使用してデータを取得できます。これらを使用する際に key を指定する必要はありません。