Rust Actix-Web v4 使用自定义 header 创建响应

Rust Actix-Web v4 creating a response with custom header

我正在尝试使用 actix-web v4.

在处理程序中创建响应

header 方法已更改为 append_header,现在它采用 header object.

而不是键值对

原始文档here给出了以下示例:

use actix_web::HttpResponse;

async fn index() -> HttpResponse {
    HttpResponse::Ok()
        .content_type("plain/text")
        .header("X-Hdr", "sample")
        .body("data")
}

我可以使用预定义的 MIME 名称创建 header 和 append_header(ContentType::plaintext()),但我还没有找到任何创建自定义类型的方法。

我本来希望像 Header::from("'X-Hdr': 'sample'") 这样的东西可以工作,但还没有找到任何方法来创建这个 header。

在 actix-web v4 中创建 'X-Hdr':'sample' header 的正确方法是什么?

pub fn append_header<H>(&mut self, header: H) -> &mut Self where
    H: IntoHeaderPair, 

append_header 方法接受任何实现 IntoHeaderPair 的类型。如果您查看该特征的文档,您会发现它是为以下对象实现的:

(&'_ HeaderName, V)
(&'_ str, V)
(HeaderName, V)
(&'_ [u8], V)
(String, V)

V 是实现 IntoHeaderValue 的任何类型,包括 String&strVec 和整数类型。

因此你可以简单地写成.append_header(("X-Hdr", "sample"))