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
Json<T> renderiza um documento JSON completo. No Salvo 0.94 e versoes posteriores, renderizar Json substitui os bytes do corpo ja armazenados em Response em vez de anexa-los. Para emitir varios registros JSON, serialize cada registro manualmente e anexe-o com write_body, por exemplo ao produzir NDJSON.
-
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.