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
Si se llama al método render varias veces para escribir datos JSON, estos datos no se fusionarán en un único objeto JSON. En su lugar, se concatenarán secuencialmente como fragmentos de texto independientes, lo que podría resultar en un formato JSON no válido. Si se necesitan devolver múltiples elementos de datos, deben combinarse en un solo objeto antes de la serialización, o la lógica debe manejarse manualmente.
-
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.