En Handler
, Response
se pasa como parámetro:
Response
encapsula todos los componentes de una respuesta HTTP, proporcionando una API completa para construir y manipular respuestas HTTP.res.status_code(200).body("Hola")
), facilitando la construcción fluida de respuestas.&mut self
, permitiendo que los manejadores construyan y personalicen fácilmente respuestas HTTP para diversas necesidades de servicios web.Response
permite que, después de que el servidor reciba una solicitud del cliente, cualquier Handler
y middleware coincidente pueda escribir datos en ella. En ciertos casos, como cuando un middleware desea evitar la ejecución de middleware y Handler
subsiguientes, puede usar FlowCtrl
:
Escribir datos en Response
es muy sencillo:
Escribir datos de texto plano
Escribir datos serializados en JSON
Si se llama múltiples veces al método render
para escribir datos JSON, estos no se combinarán en un único objeto JSON, sino que se concatenarán como fragmentos de texto independientes, lo que podría resultar en un formato JSON inválido. Si se necesita devolver múltiples datos, deben combinarse en un objeto antes de serializarlos o manejarse lógicamente.
Escribir HTML
Usar render
permite escribir información detallada de error en Response
.
Si no se necesita personalizar el mensaje de error, se puede llamar directamente a set_http_code
.
render
puede escribir una respuesta de redirección en Response
, navegando a una nueva URL. Al llamar a Redirect::found
, se establece el código de estado HTTP a 302 (Found), indicando una redirección temporal.
El tipo de cuerpo devuelto por Response es ResBody
, un enumerado que se establece como ResBody::Error
en caso de error, conteniendo información del mismo para su procesamiento posterior. StatusError
no implementa Writer
, permitiéndote personalizar su visualización en Catcher
.
Categoría | Método | Descripción |
---|---|---|
Creación | new() / with_cookies() | Crear nueva respuesta |
Código de estado | status_code() | Establecer código de estado |
Cabeceras | headers()/headers_mut() | Obtener cabeceras |
set_headers()/add_header() | Establecer/añadir cabeceras | |
content_type() | Obtener tipo de contenido | |
Versión HTTP | version()/version_mut() | Obtener/modificar versión HTTP |
Cuerpo de respuesta | body()/body_mut() | Establecer/obtener cuerpo |
replace_body()/take_body() | Reemplazar/extraer cuerpo | |
write_body() | Escribir datos en el cuerpo | |
stream()/channel() | Respuesta en flujo/crear canal de envío | |
Gestión de cookies | cookies()/cookie() | Obtener cookies/cookie específica |
add_cookie()/remove_cookie() | Añadir/eliminar cookie | |
Respuesta de contenido | render() | Renderizar contenido |
stuff() | Establecer código de estado y renderizar contenido | |
send_file() | Enviar archivo | |
Consulta de estado | is_stamped() | Verificar si la respuesta está lista para ser escrita |