我想编写一个返回的函数impl Reply
,即 Warp 处理程序。此函数执行一些业务逻辑,然后应返回两个Set-Cookie
标头;每个 cookie 的内容是不同的,并且取决于业务逻辑。我一直在使用这样的模式:
async fn my_handler() -> anyhow::Result<impl Reply> {
// Some business logic...
let reply = warp::reply::json(&json!({}));
let reply = warp::reply::with_status(reply, StatusCode::OK);
let reply = warp::reply::with_header(
reply,
header::SET_COOKIE,
"foo=bar",
);
Ok(warp::reply::with_header(
reply,
header::SET_COOKIE,
"baz=qux",
))
}
但是,这将导致仅设置第二个 cookie。另外还有warp::filters::reply::headers
,最初似乎是我想要的,但目前尚不清楚这如何与reply
上面的配合得很好。