reqwest
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;
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let resp &#61; reqwest::get("https://httpbin.org/ip")
.await?
.json::<HashMap<String, String>>()
.await?;
println!("{:#?}", resp);
Ok(())
}
代码就比较简单&#xff0c;读起来也不会觉得太难&#xff0c;获取数据&#xff0c;并对其进行格式化。
{
origin: "32.194.43.24"
}
同样的这里有一个配置选项&#xff0c;blocking
我们可以把它开起来。
[dependencies]
reqwest &#61; { version &#61; "0.11", features &#61; ["blocking", "json"] }
代码就变成这样子&#xff1a;
use std::collections::HashMap;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let resp &#61; reqwest::blocking::get("https://httpbin.org/ip")?
.json::<HashMap<String, String>>()?;
println!("{:#?}", resp);
Ok(())
}
http 头的设置&#xff0c;同样的也可以在代码中进行&#xff1a;
let mut h &#61; header::HeaderMap::new();
h.insert("Accept", header::HeaderValue::from_static("application/json"));
let client &#61; reqwest::Client::builder()
.default_headers(h)
.build()?;
同样的&#xff0c;还有可以进行其他的一些设置&#xff0c;可以通过这个文档进行参看。