4 releases (2 breaking)
| 0.3.0 | Sep 15, 2025 |
|---|---|
| 0.2.0 | Sep 11, 2025 |
| 0.1.1 | Jul 2, 2024 |
| 0.1.0 | Jun 30, 2024 |
#1269 in Network programming
191 downloads per month
69KB
1.5K
SLoC
client-util
Help you to build requests and handle responses by several extension trait!
Usage
cargo add client-util
Make it easier to use hyper http client
use client_util::prelude::*;
#[tokio::main]
async fn main() -> client_util::Result<()> {
let mut client = build_https_client().expect("fail to build client");
let request = RequestBuilder::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(())
}
Customize your own client
In RequestExt trait, we send the request by a tower service, so you can add any middle layer on the top of the existed client.
What about...
Theoretically, you can add any feature to any client by using tower.
What about trace, metrics, following redirect and more features?
You can find those features in tower-http crate as tower layers.
What about cookies?
We have tower-cookie
Feature Flags
| flag | description |
|---|---|
| json | json body |
| form | form body |
| multipart | multipart form body |
| query | serialize into and append url's query |
| auth | method to append auth header |
| hyper-client | shortcut to create a hyper http client |
| hyper-client-rustls | hyper-client with rustls |
Dependencies
~2–18MB
~202K SLoC