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