client-util 0.3.0

Help you to build requests and handle responses by several extension trait!
Documentation
use client_util::prelude::*;

#[tokio::main]
async fn main() -> client_util::Result<()> {
    let form = Form::new()
        .text("key", "value")
        .part("file", Part::bytes(b"hello, world!"));
    let mut client = client_util::client::build_https_client().unwrap();
    let request = RequestBuilder::post("https://httpbin.org/anything")?
        .version(http::Version::HTTP_11)
        .multipart(form)?;
    let (parts, response) = request
        .send(&mut client)
        .await?
        .json::<serde_json::Value>()
        .await?
        .into_parts();
    println!("{parts:?}");
    println!("{}", serde_json::to_string_pretty(&response).unwrap());
    Ok(())
}