chttp 0.2.3

The practical HTTP client that is fun to use.
Documentation

cHTTP

The practical HTTP client that is fun to use.

Build Status Crates.io Documentation License

Documentation

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.
  • TCP socket configuration.
  • Uses the future standard Rust http interface for requests and responses.

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.

Examples

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);

Installation

Add this to your Cargo.toml file:

[dependencies]
chttp = "0.2"

License

This library is licensed under the MIT license. See the LICENSE file for details.