Respuesta
En un Handler, el Response se pasa como parámetro:
- La estructura
Responseencapsula todos los componentes de una respuesta HTTP, proporcionando una API completa para construir y manipular respuestas HTTP. - Admite un estilo fluido y encadenable (por ejemplo,
res.status_code(200).body("Hello")), facilitando la construcción fluida de respuestas. - Sus funcionalidades principales incluyen:
- Establecer códigos de estado y cabeceras
- Manipular el cuerpo de la respuesta (admite cadenas de texto, bytes, archivos y datos en streaming)
- Gestionar Cookies
- Múltiples métodos de renderizado de contenido
- Esta estructura emplea un patrón de referencia mutable, devolviendo una referencia a sí misma mediante
&mut self, lo que permite a los handlers construir y personalizar convenientemente las respuestas HTTP para satisfacer diversos requisitos de servicios web.
Después de que el servidor recibe una solicitud del cliente, cualquier Handler o middleware coincidente puede escribir datos en el Response. En ciertos escenarios, como cuando un middleware desea evitar la ejecución de middleware y Handlers posteriores, se puede usar FlowCtrl:
Escribir Contenido
Escribir datos en un Response es sencillo:
-
Escribir datos de texto plano
-
Escribir datos serializados en JSON
Json<T> renderiza un documento JSON completo. En Salvo 0.94 y versiones posteriores, renderizar Json reemplaza los bytes del cuerpo ya almacenados en Response en lugar de anexarlos. Para emitir varios registros JSON, serializa cada registro manualmente y añádelo con write_body, por ejemplo al producir NDJSON.
-
Escribir HTML
Escribir Errores HTTP
-
Usar
renderpermite escribir información detallada de error en elResponse. -
Si no se necesita información de error personalizada, se puede llamar directamente a
set_http_code.
Redirigir a Otra URL
- Usando el método
render, se puede escribir una respuesta de redirección en elResponse, navegando a una nueva URL. Cuando se llama aRedirect::found, establece el código de estado HTTP en 302 (Found), indicando una redirección temporal.
ResBody
El tipo de Body devuelto por Response es ResBody, que es una enumeración. En caso de error, se establece en ResBody::Error, conteniendo información de error para un manejo diferido de errores. Es importante destacar que StatusError no implementa Writer; este diseño permite personalizar su visualización en el Catcher.