A very simple and straightforward HTTP client written in Rust.
Additional functionality for the Deboa HTTP client, including serializers, middleware, and utilities.
[dependencies]
deboa-extras = { version = "0.0.7", features = ["json", "middleware-logger"] }
use deboa_extras::http::serde::json::JsonBody;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct User {
id: u64,
name: String,
}
// Serialize request body
let user = User { id: 1, name: "John Doe".to_string() };
let request = deboa::post("https://api.example.com/users")
.body(JsonBody::new(&user))?;
// Deserialize response
let response: User = request
.send_with(&client)
.await?
.body_as(JsonBody)?;
use deboa_extras::middleware::logger::Logger;
let client = deboa::Deboa::builder()
.with(Logger::default())
.build();
use deboa_extras::middleware::retry::{Retry, RetryPolicy};
use std::time::Duration;
let retry_policy = RetryPolicy::new()
.with_max_retries(3)
.with_backoff(Duration::from_millis(100));
let client = deboa::Deboa::builder()
.with(Retry::new(retry_policy))
.build();
use deboa_extras::middleware::rate_limit::{RateLimit, RateLimiter};
// Allow 10 requests per minute per client
let rate_limiter = RateLimiter::per_minute(10);
let client = deboa::Deboa::builder()
.with(RateLimit::new(rate_limiter))
.build();
use deboa_extras::auth::BasicAuth;
let client = deboa::Deboa::builder()
.with(BasicAuth::new("username", "password"))
.build();
use deboa_extras::auth::BearerToken;
let client = deboa::Deboa::builder()
.with(BearerToken::new("your-token-here"))
.build();
json: JSON serialization/deserialization (requires serde_json)form: URL-encoded form serialization (requires serde_urlencoded)multipart: Multipart form data supportmsgpack: MessagePack serializationxml: XML serializationmiddleware-logger: Request/response loggingmiddleware-retry: Automatic request retrymiddleware-rate-limit: Rate limitingmiddleware-cache: Response cachingtesting: Testing utilities and mock serverSee the examples directory for more usage examples.
For detailed API documentation, see the docs.rs page.