pub trait RequestHandler {
    // Provided method
    fn request<'async_trait, T, E>(
        request: RequestBuilder
    ) -> Pin<Box<dyn Future<Output = Result<T, RequestError<E>>> + Send + 'async_trait>>
       where T: DeserializeOwned + 'async_trait,
             E: DeserializeOwned + 'async_trait { ... }
}
Expand description

A trait for handling HTTP requests.

Provided Methods§

source

fn request<'async_trait, T, E>( request: RequestBuilder ) -> Pin<Box<dyn Future<Output = Result<T, RequestError<E>>> + Send + 'async_trait>>where T: DeserializeOwned + 'async_trait, E: DeserializeOwned + 'async_trait,

Sends a request using the given RequestBuilder and handles the response.

Examples
#[tokio::main]
async fn main() {
    let url = "https://api.example.com";
    let request = reqwest::Client::new().get(url);

    match request::<serde_json::Value, serde_json::Value>(request).await {
        Ok(response) => {
            println!("Response: {:?}", response);
        }
        Err(error) => {
            match error {
                RequestError::Internal(message) => {
                    eprintln!("Internal Error: {}", message);
                }
                RequestError::Json(error_data) => {
                    eprintln!("JSON Error: {:?}", error_data);
                }
            }
        }
    }
}

Implementors§