pub struct ClientBuilder { /* private fields */ }Expand description
Builder for Client.
Implementations§
Source§impl ClientBuilder
impl ClientBuilder
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates an empty builder; Self::base_url is required before Self::build.
Sourcepub fn retry(self, policy: RetryPolicy) -> Self
pub fn retry(self, policy: RetryPolicy) -> Self
Sets the default RetryPolicy for all requests.
Sourcepub fn default_header(
self,
key: impl AsRef<str>,
value: impl AsRef<str>,
) -> Result<Self>
pub fn default_header( self, key: impl AsRef<str>, value: impl AsRef<str>, ) -> Result<Self>
Adds a default header applied to every request.
Sourcepub fn plugin<P: Plugin + 'static>(self, plugin: P) -> Self
pub fn plugin<P: Plugin + 'static>(self, plugin: P) -> Self
Registers a [Plugin] on this client.
Sourcepub fn reqwest_client(self, client: ReqwestClient) -> Self
pub fn reqwest_client(self, client: ReqwestClient) -> Self
Uses a custom reqwest client for the default ReqwestBackend.
Sourcepub fn backend(self, backend: Arc<dyn HttpBackend>) -> Self
pub fn backend(self, backend: Arc<dyn HttpBackend>) -> Self
Use a custom HTTP backend (for testing or alternate transports).
§Examples
let client = ClientBuilder::new()
.base_url("https://api.example.com")?
.backend(Arc::new(MockBackend))
.build()?;Sourcepub fn max_in_flight(self, limit: usize) -> Self
pub fn max_in_flight(self, limit: usize) -> Self
Limits how many requests this client may have in flight at once (including retries).
Implemented with a tokio semaphore in the core client. This counts the full request
lifecycle (hooks and retries), not just the transport hop. For wire-level limits only,
use [Self::transport_stack] with Tower’s ConcurrencyLimitLayer
(feature tower) instead of—or deliberately alongside—this setting.
Sourcepub fn json_parser<F>(self, f: F) -> Self
pub fn json_parser<F>(self, f: F) -> Self
Sets a custom JSON parser for all responses from this client.
See crate::json_parser for the two-step Bytes → Value → T pipeline vs the
default single-step fast path, and Response::into_json_with
for per-response Bytes → T without a global parser.
§Examples
let client = ClientBuilder::new()
.base_url("https://api.example.com")?
.json_parser(|body: &Bytes| {
let slice = body.strip_prefix(b"\xef\xbb\xbf").unwrap_or(body);
serde_json::from_slice(slice).map_err(|e| e.to_string())
})
.build()?;Sourcepub fn json_parser_fn(self, parser: JsonParserFn) -> Self
pub fn json_parser_fn(self, parser: JsonParserFn) -> Self
Sets a custom JSON parser from an existing JsonParserFn.