如何将自定义响应标头添加到函数实现activ_web::Responder



我使用SSE的广播器来实现此功能,并且需要添加自定义响应标头,我该如何做到这一点?

#[get("/api/sse")]
pub(super) async fn sse(req: HttpRequest, broadcaster: Data<Broadcaster>) -> impl Responder {
let mut subscribed_events = HashSet::new();
let args = req.query_string().split("&");
for arg in args {
match arg.split_once("=") {
None => {}
Some((k, v)) => {
if k == "event" {
subscribed_events.insert(v.to_string());
}
}
}
}
broadcaster.new_client(subscribed_events).await
}

Responder特性具有customize()功能:

use actix_web::{Responder, http::StatusCode, test::TestRequest};
let responder = "Hello world!"
.customize()
.with_status(StatusCode::BAD_REQUEST)
.insert_header(("x-hello", "world"));
let request = TestRequest::default().to_http_request();
let response = responder.respond_to(&request);
assert_eq!(response.status(), StatusCode::BAD_REQUEST);
assert_eq!(response.headers().get("x-hello").unwrap(), "world");

(从链接文档复制的示例(

最新更新