Resposta
Em um Handler, a Response é passada como parâmetro:
- A estrutura
Responseencapsula todos os componentes de uma resposta HTTP, fornecendo uma API abrangente para construir e manipular respostas HTTP. - Suporta um estilo fluente e encadeável (ex.:
res.status_code(200).body("Hello")), facilitando a construção suave de respostas. - As funcionalidades principais incluem:
- Definir códigos de status e cabeçalhos
- Manipular o corpo da resposta (suportando strings, bytes, arquivos e dados em fluxo)
- Gerenciar cookies
- Múltiplos métodos de renderização de conteúdo
- Esta estrutura emprega um padrão de referência mutável, retornando uma referência a si mesma via
&mut self, permitindo que os handlers construam e personalizem convenientemente respostas HTTP para atender a diversos requisitos de serviços web.
Após o servidor receber uma requisição do cliente, qualquer Handler ou middleware correspondente pode escrever dados na Response. Em certos cenários, como quando um middleware deseja impedir a execução de middlewares e Handlers subsequentes, você pode usar FlowCtrl:
Escrevendo Conteúdo
Escrever dados em uma Response é direto:
-
Escrevendo dados de texto simples
-
Escrevendo dados serializados em JSON
Se o método render for chamado múltiplas vezes para escrever dados JSON, esses dados não serão mesclados em um único objeto JSON. Em vez disso, serão concatenados sequencialmente como fragmentos de texto independentes, potencialmente resultando em um formato JSON inválido. Se múltiplos itens de dados precisarem ser retornados, eles devem ser combinados em um único objeto antes da serialização, ou a lógica deve ser tratada manualmente.
-
Escrevendo HTML
Escrevendo Erros HTTP
-
Usar
renderpermite escrever informações detalhadas de erro naResponse. -
Se informações de erro personalizadas não forem necessárias, você pode chamar diretamente
set_http_code.
Redirecionando para Outra URL
- Usando o método
render, você pode escrever uma resposta de redirecionamento naResponse, navegando para uma nova URL. Quando você chamaRedirect::found, ele define o código de status HTTP para 302 (Found), indicando um redirecionamento temporário.
ResBody
O tipo de corpo retornado pela Response é ResBody, que é uma enumeração. Em caso de erro, é definido como ResBody::Error, contendo informações de erro para tratamento diferido. Notavelmente, StatusError não implementa Writer; este design permite que você personalize sua exibição no Catcher.