Depot
O Depot é utilizado para armazenar dados temporários envolvidos em uma única requisição. O middleware pode colocar os dados temporários que processa no Depot para uso por programas subsequentes.
Quando um servidor recebe uma requisição de um navegador cliente, ele cria uma instância do Depot. Esta instância é destruída após todos os middlewares e Handler terminarem de processar a requisição.
Por exemplo, podemos definir current_user em um middleware de login e, em seguida, ler as informações do usuário atual em middleware ou Handler subsequentes.
Compreensão Rápida
O Depot é usado para armazenar e compartilhar dados durante o processamento da requisição. Ele implementa um contêiner de dados com segurança de tipos que suporta dois padrões principais de uso:
- Armazenamento Chave-Valor: Acessa valores associados a chaves de string através dos métodos
insert/get. - Injeção de Tipo: Armazena e recupera valores com base no tipo através dos métodos
inject/obtain.
Como mostrado nos exemplos, o Depot é particularmente útil para passar dados entre middleware e handlers. O middleware pode definir valores no Depot (como informações do usuário, status de autenticação), e handlers subsequentes podem recuperar esses valores sem cálculos ou consultas redundantes. O design do Depot garante a consistência e acessibilidade dos dados em toda a cadeia de processamento da requisição, tornando-o uma ferramenta central para construir aplicações web complexas.
Configurando e Recuperando Dados via insert e get
Como mostrado acima, você pode inserir chave e valor no Depot usando insert. Para valores desse tipo, você pode recuperá-los diretamente usando get.
Se a chave não existir, ou se a chave existir mas o tipo não corresponder, ele retorna None.
Configurando e Recuperando Dados via inject e obtain
Às vezes, há cenários em que existe uma instância única para um tipo sem necessidade de relacioná-la a uma chave específica. Você pode usar inject para inserir dados e, em seguida, usar obtain para recuperá-los. Esses métodos não exigem que você forneça uma chave.