2个版本
0.1.1 | 2024年7月2日 |
---|---|
0.1.0 | 2024年6月30日 |
#761 in 网络编程
每月 57次下载
80KB
2K SLoC
client-util
通过几个扩展特质帮助你构建请求和处理响应!
用法
cargo add client-util
使使用hyper HTTP客户端更加容易
use client_util::prelude::{RequestBuilderExt, RequestExt, ResponseExt, hyper_tls_client};
#[tokio::main]
async fn main() -> client_util::Result<()> {
let mut client = hyper_tls_client();
let request = http::Request::get("https://httpbin.org/json")
.version(http::Version::HTTP_11)
.json("hello client-util")?;
let (parts, response) = request
.send(&mut client)
.await?
.json::<serde_json::Value>()
.await?
.into_parts();
println!("{:?}", parts);
println!("{:?}", response);
Ok(())
}
自定义你的客户端
在 RequestExt
特质中,我们通过tower服务发送请求,因此你可以在现有的客户端上添加任何中间层。
关于...
理论上,你可以通过使用 tower
添加任何特性到任何客户端。
关于跟踪、度量、跟随重定向等功能呢?
你可以在 tower-http
crate中找到这些特性作为tower层。
关于cookies呢?
实现一个用于管理cookies的tower层是一个好主意,我们可能在未来在另一个crate中实现。
功能标志
标志 | 描述 |
---|---|
json | json体 |
form | 表单体 |
multipart | 多部分表单体 |
query | 序列化并附加URL的查询 |
auth | 追加认证头的的方法 |
decompression-deflate | deflate解压缩,需要tokio运行时 |
decompression-gzip | gzip解压缩,需要tokio运行时 |
decompression-br | br解压缩,需要tokio运行时 |
decompression-zstd | zstd解压缩,需要tokio运行时 |
decompression-all | 启用所有解压缩支持 |
hyper-client | 创建hyper HTTP客户端的快捷方式 |
hyper-client-rustls | 带有rustls的hyper客户端 |
rt-tokio | 使用tokio运行时运行,这允许你使用 tower-http |
依赖项
~2–15MB
~241K SLoC