如何在 Rocket 中将自定义 headers 添加到 content::JSON?
How to add custom headers to content::JSON in Rocket?
假设我在 rocket
(v. 0.5.0-rc.1) 中有这个路由处理程序:
#[get("/route")]
pub async fn my_route() -> content::Json<String> {
let json =
rocket::serde::json::serde_json::to_string(&my_data).unwrap();
content::Json(json)
}
如何向响应添加另一个 header(除了 content-type: application/json
)?
我想到了类似的方法,但它不起作用:
#[get("/route")]
pub async fn my_route() -> content::Json<String> {
let json =
rocket::serde::json::serde_json::to_string(&my_data).unwrap();
let mut content = content::Json(json);
content.set_raw_header("Cache-Control", "max-age=120");
content
}
我可以使用原始 rocket::Response
并自己设置 content-type: application/json
header,但我无法弄清楚如何设置 body没有 运行 生命周期问题的可变长度字符串。
您可以使用 JSON 字符串获得原始响应,如下所示:
let json =
rocket::serde::json::serde_json::to_string(&[1, 2, 3]).unwrap();
let response = Response::build()
.header(ContentType::JSON)
.raw_header("Cache-Control", "max-age=120")
.sized_body(json.len(), Cursor::new(json))
.finalize();
假设我在 rocket
(v. 0.5.0-rc.1) 中有这个路由处理程序:
#[get("/route")]
pub async fn my_route() -> content::Json<String> {
let json =
rocket::serde::json::serde_json::to_string(&my_data).unwrap();
content::Json(json)
}
如何向响应添加另一个 header(除了 content-type: application/json
)?
我想到了类似的方法,但它不起作用:
#[get("/route")]
pub async fn my_route() -> content::Json<String> {
let json =
rocket::serde::json::serde_json::to_string(&my_data).unwrap();
let mut content = content::Json(json);
content.set_raw_header("Cache-Control", "max-age=120");
content
}
我可以使用原始 rocket::Response
并自己设置 content-type: application/json
header,但我无法弄清楚如何设置 body没有 运行 生命周期问题的可变长度字符串。
您可以使用 JSON 字符串获得原始响应,如下所示:
let json =
rocket::serde::json::serde_json::to_string(&[1, 2, 3]).unwrap();
let response = Response::build()
.header(ContentType::JSON)
.raw_header("Cache-Control", "max-age=120")
.sized_body(json.len(), Cursor::new(json))
.finalize();