2 releases
0.26.2 | Sep 27, 2023 |
---|---|
0.26.1 | Sep 27, 2023 |
#386 in HTTP client
155KB
3.5K
SLoC
attohttpc
Documentation | Crates.io | Repository
Why attohttpc?
This project's goal is to provide a lightweight and simple HTTP client for the Rust ecosystem. The intended use is for projects that have HTTP needs where performance is not critical or when HTTP is not the main purpose of the application. Note that the project still tries to perform well and avoid allocation where possible, but stays away from Rust's asynchronous stack to provide a crate that's as small as possible. Features are provided behind feature flags when possible to allow users to get just what they need. Here are the goals of the project:
- Lightweight
- Secure
- Easy to use
- Modular
- HTTP/1.1
- Use quality crates from the ecosystem (
http
,url
,encoding_rs
), not reinventing the wheel.
Features
basic-auth
support for basic authcharsets
support for decoding more text encodings than just UTF-8compress
support for decompressing response bodies usingminiz_oxide
(default)compress-zlib
support for decompressing response bodies usingzlib
instead ofminiz_oxide
(see flate2 backends)compress-zlib-ng
support for decompressing response bodies usingzlib-ng
instead ofminiz_oxide
(see flate2 backends)json
support for serialization and deserializationform
support for url encoded forms (does not include support for multipart)multipart-form
support for multipart forms (does not include support for url encoding)tls-native
support for tls connections using thenative-tls
crate (default)tls-native-vendored
activate thevendored
feature ofnative-tls
tls-rustls-webpki-roots
support for TLS connections usingrustls
instead ofnative-tls
with Web PKI rootstls-rustls-native-roots
support for TLS connections usingrustls
with root certificates loaded from therustls-native-certs
crate
Usage
See the examples/
folder in the repository for more use cases.
let resp = attohttpc::post("https://my-api.com/do/something").json(&request)?.send()?;
if resp.is_success() {
let response = resp.json()?;
// ...
}
Current feature set
- Query parameters, Request headers, Bodies, etc.
- TLS, adding trusted certificates, disabling verification, etc. for both
native-tls
andrustls
- Automatic redirection
- Streaming response body
- Multiple text encodings
- Automatic compression/decompression with gzip or deflate
- Transfer-Encoding: chunked
- serde/json support
- HTTP Proxies &
HTTP_PROXY
,HTTPS_PROXY
,NO_PROXY
environment variables. - Happy Eyeballs
- Authentication (partial support)
License
This project is licensed under the MPL-2.0
.
Dependencies
~3–16MB
~246K SLoC