The practical HTTP client that is fun to use.
cHTTP provides a clean and easy-to-use interface around the venerable libcurl. Here are some of the features that are currently available:
- HTTP/2 support.
- Connection pooling and reuse.
- Response body streaming.
- Request body uploading from memory or a stream.
- Tweakable redirect policy.
- Persistent cookies across requests.
- TCP socket configuration.
- Uses the future standard Rust http interface for requests and responses.
Check out the documentation for details on how to use cHTTP.
Why libcurl?
Not everything needs to be re-invented! For typical use cases, libcurl is a fantastic choice for making web requests. It's fast, reliable, well supported, and isn't going away any time soon.
It has a reputation for having an unusual API that is sometimes tricky to use, but hey, that's why this library exists.
Really simple example that spits out the response body from https://example.org:
let mut response = chttp::get("https://example.org").unwrap();
let body = response.body_mut().text().unwrap();
println!("{}", body);
Configuring a custom client:
use chttp::{http, Client, Options, RedirectPolicy};
use std::time::Duration;
let mut options = Options::default();
options.timeout = Some(Duration::from_secs(60));
options.redirect_policy = RedirectPolicy::Limit(10);
options.preferred_http_version = Some(http::Version::HTTP_2);
let client = Client::builder()
.max_connections(Some(4))
.options(options)
.build();
let mut response = client.get("https://example.org").unwrap();
let body = response.body_mut().text().unwrap();
println!("{}", body);
Add this to your Cargo.toml file:
[dependencies]
chttp = "0.3"
This library is licensed under the MIT license. See the LICENSE file for details.