#http-client #hyper-client #hyper-http #tower-middleware #http-middleware #tower #http-request

client-util

通过几个扩展特质帮助你构建请求和处理响应!

2个版本

0.1.1 2024年7月2日
0.1.0 2024年6月30日

#761 in 网络编程

Download history 315/week @ 2024-06-27 37/week @ 2024-07-04 4/week @ 2024-07-11

每月 57次下载

Apache-2.0

80KB
2K SLoC

client-util

Crates.io Version Release status docs.rs

通过几个扩展特质帮助你构建请求和处理响应!

用法

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