Expand description
reqx is an internal HTTP transport crate for API SDKs with HTTP/1.1 + HTTP/2 support.
§Quick Start
use std::time::Duration;
use reqx::prelude::{HttpClient, RetryPolicy};
use serde::Deserialize;
#[derive(Debug, Deserialize)]
struct CreateItemResponse {
id: String,
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = HttpClient::builder("https://api.example.com")
.client_name("my-sdk")
.request_timeout(Duration::from_secs(3))
.total_timeout(Duration::from_secs(8))
.retry_policy(
RetryPolicy::standard()
.max_attempts(3)
.base_backoff(Duration::from_millis(100))
.max_backoff(Duration::from_millis(800)),
)
.try_build()?;
let created: CreateItemResponse = client
.post("/v1/items")
.idempotency_key("create-item-001")?
.json(&serde_json::json!({ "name": "demo" }))?
.send_json()
.await?;
println!("created id={}", created.id);
Ok(())
}§Recommended Defaults
- Use
RetryPolicy::standard()for SDK traffic. - Set both request timeout and total timeout.
- For
POSTretries, always setidempotency_key(...).
Modules§
Structs§
- Adaptive
Concurrency Policy - Async
Resumable Uploader _async - Blocking
Http Client _blocking - Blocking
Http Client Builder _blocking - Blocking
Http Response Stream _blocking - Blocking
Resumable Uploader - Circuit
Breaker Policy - Http
Client _async - Http
Client Builder _async - Http
Client Metrics Snapshot - Http
Response - Http
Response Stream _async - Permissive
Retry Eligibility - Rate
Limit Policy - Redirect
Policy - Request
Context - Resumable
Upload Checkpoint - Resumable
Upload Options - Resumable
Upload Result - Retry
Budget Policy - Retry
Decision - Retry
Policy - Strict
Retry Eligibility - Uploaded
Part
Enums§
- Http
Client Error - Http
Client Error Code - Part
Checksum Algorithm - Resumable
Upload Error - Server
Throttle Scope - Timeout
Phase - TlsBackend
- Transport
Error Kind
Constants§
Traits§
- Async
Resumable Upload Backend _async - Blocking
Resumable Upload Backend - Http
Interceptor - Retry
Classifier - Retry
Eligibility