所以我查找了http crate docs并使用Request::builder()发出请求.然而,尽管听起来很愚蠢,我还是没能找到如何发送这个请求.我需要做什么?:p

这里有一个示例代码,但它省略了重要的部分,即send()函数:

use http::{Request, Response};

let mut request = Request::builder()
    .uri("https://www.rust-lang.org/")
    .header("User-Agent", "my-awesome-agent/1.0");

if needs_awesome_header() {
    request = request.header("Awesome", "yes");
}

let response = send(request.body(()).unwrap());

fn send(req: Request<()>) -> Response<()> {
    // ...
}

我已经设法通过HYPER发送了请求,跟在starter guide之后,但http crate对我来说似乎更容易理解……至少只要我不必发送我的请求:p

目前,我有:

use http::{Request, Response, StatusCode};

fn main() {
    let request = Request::builder()
        .method("GET")
        .uri("https://api.spotify.com/v1/search?q=system+overload")
        .header("artist", "smash stereo")
        .body(())
        .unwrap();
    println!("{:?}", request);

}

以下哪项输出:

Request { method: GET, uri: https://api.spotify.com/v1/search?q=system+overload, version: HTTP/1.1, headers: {"artist": "smash stereo"}, body: () }

推荐答案

你不能这么做.这crate documentation人本身就声明:

值得注意的是,您将在该机箱中找到发送请求或启动服务器的实现.它的目的是使该机箱成为HTTP客户端和服务器的"标准库",而不指定任何特定的实现.

您可以将http种类型与do支持发送请求的其他库一起使用,例如:

Rust相关问答推荐

为什么迭代器上的`. map(...)`的返回类型如此复杂?

go 掉包装 struct 中的泛型

"value is never read警告似乎不正确.我应该忽略它吗?

integer cast as pointer是什么意思

当T不执行Copy时,如何返回Arc Mutex T后面的值?

如何修复数组中NewType导致的运行时开销

Trait bound i8:来自u8的不满意

在Rust中声明和定义一个 struct 体有什么区别

如何在嵌套的泛型 struct 中调用泛型方法?

当推送到 HashMap 中的 Vector 时,类型 `()` 无法取消引用

将泛型中的 Box 转换为 rust 中的 Box

Rust 中的方法调用有什么区别?

为什么 File::read_to_end 缓冲区容量越大越慢?

更好的方法来模式匹配带有 Rust 的窥视孔装配说明窗口?

RAII 模式的 Rust 解决方案,用于在 new() 和 drop() 上修改另一个对象

如果我不想运行析构函数,如何移出具有析构函数的 struct ?

Cargo:如何将整个目录或文件包含在功能标志中?

如何从 Rust 中不同类型的多个部分加入 Path?

返回 &str 但不是 String 时,borrow 时间比预期长

为什么 Bevy 的 Trait 边界不满足 Rapier 物理插件?