Depot
Depot wird verwendet, um temporäre Daten zu speichern, die während einer einzelnen Anfrage verarbeitet werden. Middleware kann die von ihr verarbeiteten temporären Daten im Depot ablegen, damit nachfolgende Programme darauf zugreifen können.
Wenn ein Server eine Anfrage von einem Client-Browser empfängt, erstellt er eine Instanz von Depot. Diese Instanz wird zerstört, nachdem alle Middleware-Komponenten und der Handler die Anfrage verarbeitet haben.
Beispielsweise können wir in einer Login-Middleware current_user setzen und dann in nachfolgender Middleware oder im Handler die Informationen des aktuellen Benutzers auslesen.
Schnellverständnis
Depot dient der Speicherung und dem Austausch von Daten während der Anfrageverarbeitung. Es implementiert einen typsicheren Datencontainer, der zwei Hauptnutzungsmuster unterstützt:
- Schlüssel-Wert-Speicher: Zugriff auf Werte über Zeichenfolgenschlüssel mittels
insert/get-Methoden. - Typinjektion: Speichern und Abrufen von Werten basierend auf ihrem Typ mittels
inject/obtain-Methoden.
Wie die Beispiele zeigen, ist Depot besonders nützlich für die Datenweitergabe zwischen Middleware und Handlern. Middleware kann Werte im Depot setzen (wie Benutzerinformationen, Authentifizierungsstatus), und nachfolgende Handler können diese Werte abrufen, ohne redundante Berechnungen oder Abfragen durchführen zu müssen. Das Design von Depot gewährleistet Datenkonsistenz und -zugänglichkeit über die gesamte Anfrageverarbeitungskette hinweg und macht es zu einem Kernwerkzeug für den Aufbau komplexer Webanwendungen.
Setzen und Abrufen von Daten über insert und get
Wie oben gezeigt, können Sie mit insert einen Schlüssel und einen Wert in das Depot einfügen. Für Werte dieses Typs können Sie sie direkt mit get abrufen.
Wenn der Schlüssel nicht existiert oder der Schlüssel existiert, aber der Typ nicht übereinstimmt, wird None zurückgegeben.
Setzen und Abrufen von Daten über inject und obtain
Manchmal gibt es Szenarien, in denen für einen Typ eine eindeutige Instanz existiert, ohne dass diese einem spezifischen Schlüssel zugeordnet werden muss. Sie können inject verwenden, um Daten einzufügen, und dann obtain, um sie abzurufen. Diese Methoden erfordern keine Angabe eines Schlüssels.