Skip to main content

RequestBuilder

Struct RequestBuilder 

Source
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>

Source

pub fn param(self, key: impl Into<String>, value: impl ToString) -> Self

Sets a path template parameter (:key in the path).

Source

pub fn params(self, params: HashMap<String, String>) -> Self

Merges path parameters from a map.

Source

pub fn params_iter( self, params: impl IntoIterator<Item = (impl Into<String>, impl ToString)>, ) -> Self

Merges path parameters from an iterator.

Source

pub fn query(self, key: impl Into<String>, value: impl ToString) -> Self

Adds a query string parameter.

Source

pub fn queries(self, query: IndexMap<String, QueryValue>) -> Self

Sets multiple query parameters preserving insertion order.

Source

pub fn query_json<T: Serialize>( self, key: impl Into<String>, value: &T, ) -> Result<Self>

Serializes value as JSON and uses it as a query parameter (feature json).

Source

pub fn header( self, key: impl AsRef<str>, value: impl AsRef<str>, ) -> Result<Self>

Adds a request header.

Source

pub fn json<T: Serialize>(self, body: &T) -> Result<Self>

Sets a JSON request body (feature json).

Source

pub fn body(self, body: impl Into<Bytes>) -> Self

Sets a raw request body.

Source

pub fn form<I, K, V>(self, fields: I) -> Self
where I: IntoIterator<Item = (K, V)>, K: AsRef<str>, V: AsRef<str>,

URL-encoded form body (application/x-www-form-urlencoded).

Source

pub fn timeout(self, timeout: Duration) -> Self

Overrides the client default timeout for this request.

Source

pub fn retry(self, policy: RetryPolicy) -> Self

Overrides the client default retry policy for this request.

Source

pub fn auth(self, auth: Auth) -> Self

Overrides authentication for this request.

Source

pub fn bearer_token(self, token: impl Into<String>) -> Self

Sets bearer authentication for this request.

Source

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());
Source

pub fn throw_on_error(self, throw: bool) -> Self

When true, send returns Err on non-2xx HTTP status (like upstream throw: true).

Source

pub fn json_parser<F>(self, f: F) -> Self
where F: Fn(&Bytes) -> Result<Value, String> + Send + Sync + 'static,

Overrides the client’s JSON parser for this request only.

See crate::json_parser for fast path vs two-step parsing.

Source

pub fn json_parser_fn(self, parser: JsonParserFn) -> Self

Overrides the client’s JSON parser for this request only.

Source

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());
}
Source

pub async fn send_json<T: DeserializeOwned>(self) -> Result<T>

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?;

Auto Trait Implementations§

§

impl<'a> !Freeze for RequestBuilder<'a>

§

impl<'a> !RefUnwindSafe for RequestBuilder<'a>

§

impl<'a> Send for RequestBuilder<'a>

§

impl<'a> Sync for RequestBuilder<'a>

§

impl<'a> Unpin for RequestBuilder<'a>

§

impl<'a> UnsafeUnpin for RequestBuilder<'a>

§

impl<'a> !UnwindSafe for RequestBuilder<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more