48 releases
new 0.14.0 | May 5, 2025 |
---|---|
0.13.2 | Mar 30, 2025 |
0.13.1 | Dec 6, 2024 |
0.13.0 | Oct 14, 2024 |
0.3.1 | Nov 21, 2018 |
#29 in HTTP client
8,929 downloads per month
Used in 52 crates
(27 directly)
145KB
3K
SLoC
http_req
Simple and lightweight HTTP client with built-in HTTPS support.
- HTTP and HTTPS via rust-native-tls (or optionally rustls)
- Small binary size (0.7 MB for a basic GET request in the default configuratio)
- Minimal number of dependencies
Requirements
http_req by default uses rust-native-tls, which relies on TLS framework provided by OS on Windows and macOS, and OpenSSL on all other platforms. But it also supports rustls.
All functionalities
- Support for both HTTP and HTTPS protocols via rust-native-tls (or optionally rustls)
- Creating and sending HTTP requests using the
Request
type (with extended capabilities provided viaRequestMessage
andStream
) - Representing HTTP responses with the
Response
type, allowing easy access to details like the status code and headers - Handling redirects using the
RedirectPolicy
- Support for Basic and Bearer authentication
- Processing responses with
Transfer-Encoding: chunked
- Managing absolute
Uri
s and partial support for relativeUri
s - Enforcing timeouts on requests
- Downloading data in a streaming fashion, allowing direct saving to disk (minimizing RAM usage)
Error
handling system allowing for better debugging- Utility functions for easily sending common request types:
get
,head
,post
Usage
Default configuration
In order to use http_req
with default configuration, add the following lines to Cargo.toml
:
[dependencies]
http_req = "^0.14"
Rustls
In order to use http_req
with rustls
in your project, add the following lines to Cargo.toml
:
[dependencies]
http_req = { version="^0.14", default-features = false, features = ["rust-tls"] }
HTTP only
In order to use http_req
without any additional features in your project (no HTTPS, no Authentication), add the following lines to Cargo.toml
:
[dependencies]
http_req = { version="^0.14", default-features = false }
Example
Basic HTTP GET request
use http_req::request;
fn main() {
let mut body = Vec::new(); //Container for body of a response.
let res = request::get("https://doc.rust-lang.org/", &mut body).unwrap();
println!("Status: {} {}", res.status_code(), res.reason());
}
Take a look at more examples
License
Licensed under MIT.
Dependencies
~0.2–11MB
~144K SLoC