Expand description
§Development
🚧 The library is currently under development 🚧
Many features require an unstable Rust feature – return type notation. The main crate areq has the rtn feature, which enables the missing functionality. High-level crates areq-smol and areq-tokio require this feature for compilation, so to use the library you need to install nightly compiler. Once the RTN feature is stabilized, the library will be usable on stable.
§Features
- Async only, no hidden overhead from blocking API
- Independent of any async runtime, including features. Instead, the runtime extends the functionality of the base crate
- Zero-cost abstractions for a flexible solution and an ability to choose a simple API when needed
- Modular and configurable – build exactly the HTTP client you need
§Getting Started
Although the library is runtime-agnostic, it also provides high-level crates for choosing a specific runtime. Currently, two crates are available:
areq-smolprovides support for the smol runtimeareq-tokioprovides support for the tokio runtime
As an example, let’s use tokio and add the crate to a project. You also need to select an HTTP protocol version that the client will support. For this example, let’s use HTTP/1.1 which can be enabled with the http1 cargo feature:
cargo add areq-tokio -F http1Now you can make a GET request and read a response body:
use {
areq_tokio::{areq::{http::Uri, http1::Http1}, prelude::*},
std::io::Error,
};
async fn get() -> Result<String, Error> {
let uri = Uri::from_static("http://127.0.0.1:3001/hello");
let (mut client, conn) = Http1::default().connect(&uri).await?;
tokio::spawn(conn);
client.get(uri, ()).await?.text().await
}
fn main() {
let rt = tokio::runtime::Runtime::new();
match rt.and_then(|rt| rt.block_on(get())) {
Ok(text) => println!("{text}"),
Err(e) => eprintln!("io error: {e}"),
}
}Re-exports§
Modules§
- body
- Body types and traits.
- http1
http1 - The http/1.1 client.
- http2
http2 - The http/2 client.
- negotiate
- prelude
- The crate’s prelude.
- tls
tls - The http client over TLS.
Structs§
- Address
- The network address.
- Request
- Response
- Session
- The communication session between a client and a host.
Enums§
- Alt
- Error
- The handshake error type.
- Invalid
Uri
Traits§
- Client
- Client
Ext - Handshake
- The trait to establish a client session over an asynchronous connection.
- Handshake
With rtn - Into
Host