pub struct RequestBuilder<'a> { /* private fields */ }Expand description
Fluent builder for a single HTTP request.
By default send returns Response even on non-2xx status. Use
throw_on_error(true) to get Err from send, or use
send_json which checks status before deserializing.
Implementations§
Source§impl<'a> RequestBuilder<'a>
impl<'a> RequestBuilder<'a>
Sourcepub fn param(self, key: impl Into<String>, value: impl ToString) -> Self
pub fn param(self, key: impl Into<String>, value: impl ToString) -> Self
Sets a path template parameter (:key in the path).
Sourcepub fn params(self, params: HashMap<String, String>) -> Self
pub fn params(self, params: HashMap<String, String>) -> Self
Merges path parameters from a map.
Sourcepub fn params_iter(
self,
params: impl IntoIterator<Item = (impl Into<String>, impl ToString)>,
) -> Self
pub fn params_iter( self, params: impl IntoIterator<Item = (impl Into<String>, impl ToString)>, ) -> Self
Merges path parameters from an iterator.
Sourcepub fn params_ordered(
self,
params: impl IntoIterator<Item = (impl Into<String>, impl ToString)>,
) -> Self
pub fn params_ordered( self, params: impl IntoIterator<Item = (impl Into<String>, impl ToString)>, ) -> Self
Merges path parameters in iterator order (substitution follows :segment order in the path).
Alias for params_iter; prefer this name when documenting ordered routes.
Sourcepub fn base_url(self, base_url: impl AsRef<str>) -> Result<Self>
pub fn base_url(self, base_url: impl AsRef<str>) -> Result<Self>
Overrides the client base URL for this request only.
§Examples
let client = Client::new("https://api.example.com")?;
let _ = client
.get("/health")
.base_url("https://status.example.com")?
.send()
.await?;Sourcepub fn query(self, key: impl Into<String>, value: impl ToString) -> Self
pub fn query(self, key: impl Into<String>, value: impl ToString) -> Self
Adds a query string parameter.
Sourcepub fn queries(self, query: IndexMap<String, QueryValue>) -> Self
pub fn queries(self, query: IndexMap<String, QueryValue>) -> Self
Sets multiple query parameters preserving insertion order.
Sourcepub fn query_json<T: Serialize>(
self,
key: impl Into<String>,
value: &T,
) -> Result<Self>
Available on crate feature json only.
pub fn query_json<T: Serialize>( self, key: impl Into<String>, value: &T, ) -> Result<Self>
json only.Serializes value as JSON and uses it as a query parameter (feature json).
Sourcepub fn header(
self,
key: impl AsRef<str>,
value: impl AsRef<str>,
) -> Result<Self>
pub fn header( self, key: impl AsRef<str>, value: impl AsRef<str>, ) -> Result<Self>
Adds a request header.
Sourcepub fn json<T: Serialize>(self, body: &T) -> Result<Self>
Available on crate feature json only.
pub fn json<T: Serialize>(self, body: &T) -> Result<Self>
json only.Sets a JSON request body (feature json).
Sourcepub fn content_type(self, value: impl AsRef<str>) -> Result<Self>
pub fn content_type(self, value: impl AsRef<str>) -> Result<Self>
Sets Content-Type when not already present.
Sourcepub fn body_stream(self, stream: BodyStream) -> Self
pub fn body_stream(self, stream: BodyStream) -> Self
Sets a streaming request body (not replayable with automatic retry).
Sets Content-Type to application/octet-stream when not already set.
Sourcepub fn form<I, K, V>(self, fields: I) -> Self
pub fn form<I, K, V>(self, fields: I) -> Self
URL-encoded form body (application/x-www-form-urlencoded).
Sourcepub fn multipart(self, form: Form) -> Self
Available on crate feature multipart only.
pub fn multipart(self, form: Form) -> Self
multipart only.Multipart form body (requires the multipart feature).
Automatic retry is not supported when multipart bodies are used.
Sourcepub fn timeout(self, timeout: Duration) -> Self
pub fn timeout(self, timeout: Duration) -> Self
Overrides the client default timeout for this request.
Sourcepub fn retry(self, policy: RetryPolicy) -> Self
pub fn retry(self, policy: RetryPolicy) -> Self
Overrides the client default retry policy for this request.
Sourcepub fn bearer_token(self, token: impl Into<String>) -> Self
pub fn bearer_token(self, token: impl Into<String>) -> Self
Sets bearer authentication for this request.
Sourcepub fn cancellation_token(self, token: CancellationToken) -> Self
pub fn cancellation_token(self, token: CancellationToken) -> Self
Cancels the in-flight request and retry sleeps when this token is triggered.
§Examples
let client = Client::new("https://api.example.com")?;
let token = CancellationToken::new();
let token_clone = token.clone();
tokio::spawn(async move {
tokio::time::sleep(Duration::from_millis(10)).await;
token_clone.cancel();
});
let err = client
.get("/slow")
.cancellation_token(token)
.send()
.await
.unwrap_err();
assert!(err.is_cancelled());Sourcepub fn throw_on_error(self, throw: bool) -> Self
pub fn throw_on_error(self, throw: bool) -> Self
When true, send returns Err on non-2xx HTTP status (like upstream throw: true).
Sourcepub fn json_parser<F>(self, f: F) -> Self
Available on crate feature json only.
pub fn json_parser<F>(self, f: F) -> Self
json only.Overrides the client’s JSON parser for this request only.
See crate::json_parser for fast path vs two-step parsing.
Sourcepub fn json_parser_fn(self, parser: JsonParserFn) -> Self
Available on crate feature json only.
pub fn json_parser_fn(self, parser: JsonParserFn) -> Self
json only.Overrides the client’s JSON parser for this request only.
Sourcepub async fn send(self) -> Result<Response>
pub async fn send(self) -> Result<Response>
Executes the request and returns the Response.
Non-2xx responses are returned as Ok(Response) unless throw_on_error
is true. Deserialize JSON with Response::json or use
send_json for a one-step typed result.
§Examples
let client = Client::new("https://api.example.com")?;
let response = client.get("/users/1").send().await?;
if response.is_success() {
println!("status {}", response.status());
}Sourcepub fn max_response_bytes(self, limit: u64) -> Self
pub fn max_response_bytes(self, limit: u64) -> Self
Maximum response body size in bytes for this request.
Applies to send, send_json, send_stream,
and StreamingResponse::collect. When the body would exceed
the limit, returns Error::BodyTooLarge. On the streaming path,
the limit is also enforced incrementally on each chunk.
Sourcepub fn retry_body_peek_bytes(self, limit: u64) -> Self
pub fn retry_body_peek_bytes(self, limit: u64) -> Self
Overrides the client default for how many bytes may be read when a custom retry predicate runs on a stream.
Sourcepub async fn send_stream(self) -> Result<StreamingResponse>
pub async fn send_stream(self) -> Result<StreamingResponse>
Executes the request and returns a StreamingResponse without buffering the full body.
Uses Hooks::on_request, Hooks::on_response_stream,
and Hooks::on_success_stream (2xx). Buffered
Hooks::on_response / on_success are not called.
Custom retry predicates may peek up to ClientBuilder::retry_body_peek_bytes
without consuming the body returned to the caller. Non-2xx responses keep the full streaming
body unless Self::throw_on_error(true) or a retry discards it.
Cancellation wakes pending body reads via the cancellation token (checked on each stream poll).
§Examples
let client = Client::new("https://api.example.com")?;
let mut response = client.get("/export").send_stream().await?;
while let Some(chunk) = response.bytes_stream().next().await {
let _chunk = chunk?;
}Sourcepub async fn send_json<T: DeserializeOwned>(self) -> Result<T>
Available on crate feature json only.
pub async fn send_json<T: DeserializeOwned>(self) -> Result<T>
json only.Executes the request and deserializes JSON on success (feature json).
Fails with Error::Http or Error::Deserialize
on non-2xx or invalid JSON.
§Examples
let client = Client::new("https://api.example.com")?;
let user: User = client.get("/users/:id").param("id", 1).send_json().await?;Sourcepub fn disable_validation(self, disable: bool) -> Self
Available on crate feature schema-validate only.
pub fn disable_validation(self, disable: bool) -> Self
schema-validate only.When true, skip registry JSON Schema validation for this request (request body, query,
params, and response on send() / StreamingResponse::collect).
Strict SchemaRegistry::ensure_route still runs.
Does not affect garde (validate_response on send_json_validated).
Matches upstream TypeScript disableValidation (feature schema-validate).
Sourcepub fn validate_response(self, validate: bool) -> Self
Available on crate feature validate only.
pub fn validate_response(self, validate: bool) -> Self
validate only.When false, send_json_validated only deserializes (no garde).
Sourcepub async fn send_json_validated<T>(self) -> Result<T>
Available on crate feature validate only.
pub async fn send_json_validated<T>(self) -> Result<T>
validate only.send + Response::json_validated (feature validate).
Sourcepub fn json_validated<T>(self, body: &T) -> Result<Self>
Available on crate feature validate only.
pub fn json_validated<T>(self, body: &T) -> Result<Self>
validate only.Serializes and validates body with garde::Validate before sending (feature validate).