reqwest
又是一个http
的客户端,基本上来说,每一种语言都会开发出http
的客户端,这些库好不好用其实是另一回事,有才是关键。
一个简单而强大的 Rust HTTP 客户端。
github的地址在这里。
reqwest
的安装和使用并不复杂,这里介绍下,安装和简单的使用情况。
你可以通过将它加入 Cargo.toml
这种方式简单快速安装 reqwest
,同时把 tokio
也添加并安装,因为 reqwest
底层使用了这个异步运行时。
[dependencies]
reqwest = { version = "0.11", features = ["json"] }
tokio = { version = "1", features = ["full"] }
比如我们想获取我们外网的ip地址,我们可以访问
https://httpbin.org/ip
这个网站,这个网站返回的是json
的数据,我们需要对json
进行格式化,获取相应的字段。
代码如下:
use std::collections::HashMap;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let resp = reqwest::get("https://httpbin.org/ip")
.await?
.json::<HashMap<String, String>>()
.await?;
println!("{:#?}", resp);
Ok(())
}
代码就比较简单,读起来也不会觉得太难,获取数据,并对其进行格式化。
{
origin: "32.194.43.24"
}
同样的这里有一个配置选项,blocking
我们可以把它开起来。
[dependencies]
reqwest = { version = "0.11", features = ["blocking", "json"] }
代码就变成这样子:
use std::collections::HashMap;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let resp = reqwest::blocking::get("https://httpbin.org/ip")?
.json::<HashMap<String, String>>()?;
println!("{:#?}", resp);
Ok(())
}
http 头的设置,同样的也可以在代码中进行:
let mut h = header::HeaderMap::new();
h.insert("Accept", header::HeaderValue::from_static("application/json"));
let client = reqwest::Client::builder()
.default_headers(h)
.build()?;
同样的,还有可以进行其他的一些设置,可以通过这个文档进行参看。