Response
在 Handler
中, Response
会被作为参数传入:
#[handler]
async fn hello_world(res: &mut Response) {
res.render("Hello world!");
}
Response
在服务器接收到客户端请求后, 任何匹配到的 Handler
和中间件都可以向里面写入数据. 在某些情况下, 比如某个中间件希望阻止后续的中间件和 Handler
执行, 您可以使用 FlowCtrl
:
#[handler]
async fn hello_world(res: &mut Response, ctrl: &mut FlowCtrl) {
ctrl.skip_rest();
res.render("Hello world!");
}
写入内容
向 Response
中写入数据是非常简单的:
写入纯文本数据
res.render("Hello world!");
写入 JSON 序列化数据
use serde::Serialize; use salvo::prelude::Json; #[derive(Serialize, Debug)] struct User { name: String, } let user = User{name: "jobs".to_string()}; res.render(Json(user));
写入 HTML
res.render(Text::Html("<html><body>hello</body></html>"));
写入 HTTP 错误
使用
render
可以向Response
写入详细错误信息.use salvo::http::errors::*; res.render(StatusError::internal_server_error().brief("error when serialize object to json"))
如果您不需要自定义错误信息, 可以直接调用
set_http_code
.use salvo::http::StatusCode; res.status_code(StatusCode::BAD_REQUEST);