Respuesta (Response)
Podemos obtener la referencia de respuesta como parámetro del manejador de la función:
#[handler]
async fn hello_world(res: &mut Response) {
res.render("hello world!");
}
Cuando el servidor obtiene una solicitud de un cliente pero solo necesitas retornar una simple respuesta (es decir, omitir cualquier middleware u otro manejador), puedes simplemente usar FlowCtrl
:
#[handler]
async fn hello_world(res: &mut Response, ctrl: &mut FlowCtrl) {
ctrl.skip_rest();
res.render("hello world!");
}
Escribir contenido (Write content)
Escribe contenido directamente:
Para escribir un texto plano:
res.render("hello world!");
Para escribir una serialización de un objeto con formato
json
#[derive(Serialize, Debug)] struct User { name: String, } let user = User{name: "jobs".to_string()}; res.render(Json(user));
Para escribir un texto en formato
html
res.render(Text::Html("<html><body>hello</body></html>"));
Escribir un estado de error
El uso de
render
puede escribir una respuesta tipo http error.use salvo::http::errors::*; res.render(StatusError::internal_server_error().brief("error when serialize object to json"))
Si no quieres personalizar el mensaje de error, solo usa el
status_code
.use salvo::http::StatusCode; res.status_code(StatusCode::BAD_REQUEST);
Redireccionar a Otra URL
- Utiliza el método
render
para escribir una respuesta de redirección enResponse
, que navega hacia una nueva URL. Al invocar el método Redirect::found, se establece el código de estado HTTP en 302 (Found), lo que indica un redireccionamiento temporal.use salvo::prelude::*; #[handler] async fn redirect(res: &mut Response) { res.render(Redirect::found("https://salvo.rs/")); }