Crates.io | chttp |
lib.rs | chttp |
version | 0.5.5 |
source | src |
created_at | 2017-12-21 23:02:29.271878 |
updated_at | 2019-08-03 23:11:14.996926 |
description | The practical HTTP client that is fun to use. |
homepage | |
repository | https://github.com/sagebind/chttp |
max_upload_size | |
id | 43902 |
size | 437,633 |
The practical HTTP client that is fun to use.
Note: cHTTP has been renamed to Isahc. Check out the latest and greatest versions under the new name!
cHTTP provides an easy-to-use, flexible, and idiomatic Rust API that makes sending HTTP requests a breeze. The goal of cHTTP is to make the easy way also provide excellent performance and correctness for common use cases.
cHTTP uses libcurl under the hood to handle the HTTP protocol and networking. Using curl as an engine for an HTTP client is a great choice for a few reasons:
Safe Rust bindings to libcurl are provided by the curl crate, which you can use yourself if you want to use curl directly. cHTTP delivers a lot of value on top of vanilla curl, by offering a simpler, more idiomatic API and doing the hard work of turning the powerful multi interface into a futures-based API.
Install via Cargo by adding to your Cargo.toml
file:
[dependencies]
chttp = "0.5"
The current release is only guaranteed to work with the latest stable Rust compiler. When cHTTP reaches version 1.0
, a more conservative policy will be adopted.
cHTTP is designed to be as "pay-as-you-need" as possible using Cargo feature
flags and optional dependencies. Unstable features are also initially
released behind feature flags until they are stabilized. You can add the
feature names below to your Cargo.toml
file to enable them:
[dependencies.chttp]
version = "0.5"
features = ["psl"]
Below is a list of all available feature flags and their meanings.
cookies
: Enable persistent HTTP cookie support. Enabled by default.http2
: Enable HTTP/2 support in libcurl via libnghttp2. Enabled by default.json
: Additional serialization and deserialization of JSON bodies via serde. Disabled by default.psl
: Enable use of the Public Suffix List to filter out potentially malicious cross-domain cookies. Disabled by default.static-curl
: Use a bundled libcurl version and statically link to it. Enabled by default.middleware-api
: Enable the new middleware API. Unstable until the API is finalized. This an unstable feature whose interface may change between patch releases.Please check out the documentation for details on what cHTTP can do and how to use it.
To get you started, here is a really simple example that spits out the response body from https://example.org:
// Send a GET request and wait for the response.
let mut response = chttp::get("https://example.org")?
// Read the response body into a string and print it to standard output.
let body = response.body_mut().text()?;
println!("{}", body);
This library is licensed under the MIT license. See the LICENSE file for details.