Avatar ·

如何在 Rust 中发送 HTTP 请求?

大家好!我开始学习 Rust,遇到了执行 HTTP 请求的问题。需要向外部 API 发送 GET 请求并获取 JSON 响应。我尝试使用标准库,但据我所知,它没有内置的 HTTP 客户端。

我尝试写了类似这样的代码:

use std::io::Read;

fn main() {
    let mut response = reqwest::blocking::get("https://api.example.com/data").unwrap();
    let mut body = String::new();
    response.read_to_string(&mut body).unwrap();
    println!("{}", body);
}

但遇到错误:error[E0432]: unresolved import 'reqwest'。看来需要在 Cargo.toml 中添加依赖。如何正确引入 reqwest crate?有哪些替代方案?我对异步版本(tokio + reqwest)和阻塞版本(简单)都感兴趣。

期望得到一个带有错误处理的工作示例,这样代码在请求失败时不会 panic。最好能通过 serde_json 解析 JSON。提前感谢帮助!