[][src]Struct surf::Client

pub struct Client { /* fields omitted */ }

An HTTP client, capable of sending Requests and running a middleware stack.

Examples

let client = surf::Client::new();
let res1 = client.recv_string(surf::get("https://httpbin.org/get"));
let res2 = client.recv_string(surf::get("https://httpbin.org/get"));
let (str1, str2) = futures_util::future::try_join(res1, res2).await?;

Implementations

impl Client[src]

pub fn new() -> Self[src]

Create a new instance.

Examples

let client = surf::Client::new();

pub fn with_http_client(http_client: Arc<dyn HttpClient>) -> Self[src]

Create a new instance with an http_client::HttpClient instance.

Examples

let client = surf::Client::with_http_client(Arc::new(H1Client::new()));

pub fn with(self, middleware: impl Middleware) -> Self[src]

Push middleware onto the middleware stack.

See the middleware submodule for more information on middleware.

Examples

let req = surf::get("https://httpbin.org/get");
let client = surf::client()
    .with(surf::middleware::Redirect::default());
let res = client.send(req).await?;

pub fn send(
    &self,
    req: impl Into<Request>
) -> BoxFuture<'static, Result<Response>>
[src]

Send a Request using this client.

Examples

let req = surf::get("https://httpbin.org/get");
let client = surf::client();
let res = client.send(req).await?;

pub async fn recv_bytes<'_>(
    &'_ self,
    req: impl Into<Request>
) -> Result<Vec<u8>>
[src]

Submit the request and get the response body as bytes.

Examples

let req = surf::get("https://httpbin.org/get");
let bytes = surf::client().recv_bytes(req).await?;
assert!(bytes.len() > 0);

pub async fn recv_string<'_>(
    &'_ self,
    req: impl Into<Request>
) -> Result<String>
[src]

Submit the request and get the response body as a string.

Examples

let req = surf::get("https://httpbin.org/get");
let string = surf::client().recv_string(req).await?;
assert!(string.len() > 0);

pub async fn recv_json<T: DeserializeOwned, '_>(
    &'_ self,
    req: impl Into<Request>
) -> Result<T>
[src]

Submit the request and decode the response body from json into a struct.

Examples

#[derive(Deserialize, Serialize)]
struct Ip {
    ip: String
}

let req = surf::get("https://api.ipify.org?format=json");
let Ip { ip } = surf::client().recv_json(req).await?;
assert!(ip.len() > 10);

pub async fn recv_form<T: DeserializeOwned, '_>(
    &'_ self,
    req: impl Into<Request>
) -> Result<T>
[src]

Submit the request and decode the response body from form encoding into a struct.

Errors

Any I/O error encountered while reading the body is immediately returned as an Err.

If the body cannot be interpreted as valid json for the target type T, an Err is returned.

Examples

#[derive(Deserialize, Serialize)]
struct Body {
    apples: u32
}

let req = surf::get("https://api.example.com/v1/response");
let Body { apples } = surf::client().recv_form(req).await?;

pub fn get(&self, uri: impl AsRef<str>) -> RequestBuilder

Notable traits for RequestBuilder

impl Future for RequestBuilder type Output = Result<Response>;
[src]

Perform an HTTP GET request using the Client connection.

Panics

This will panic if a malformed URL is passed.

Errors

Returns errors from the middleware, http backend, and network sockets.

Examples

let client = surf::client();
let string = client.get("https://httpbin.org/get").recv_string().await?;

pub fn head(&self, uri: impl AsRef<str>) -> RequestBuilder

Notable traits for RequestBuilder

impl Future for RequestBuilder type Output = Result<Response>;
[src]

Perform an HTTP HEAD request using the Client connection.

Panics

This will panic if a malformed URL is passed.

Errors

Returns errors from the middleware, http backend, and network sockets.

Examples

let client = surf::client();
let string = client.head("https://httpbin.org/head").recv_string().await?;

pub fn post(&self, uri: impl AsRef<str>) -> RequestBuilder

Notable traits for RequestBuilder

impl Future for RequestBuilder type Output = Result<Response>;
[src]

Perform an HTTP POST request using the Client connection.

Panics

This will panic if a malformed URL is passed.

Errors

Returns errors from the middleware, http backend, and network sockets.

Examples

let client = surf::client();
let string = client.post("https://httpbin.org/post").recv_string().await?;

pub fn put(&self, uri: impl AsRef<str>) -> RequestBuilder

Notable traits for RequestBuilder

impl Future for RequestBuilder type Output = Result<Response>;
[src]

Perform an HTTP PUT request using the Client connection.

Panics

This will panic if a malformed URL is passed.

Errors

Returns errors from the middleware, http backend, and network sockets.

Examples

let client = surf::client();
let string = client.put("https://httpbin.org/put").recv_string().await?;

pub fn delete(&self, uri: impl AsRef<str>) -> RequestBuilder

Notable traits for RequestBuilder

impl Future for RequestBuilder type Output = Result<Response>;
[src]

Perform an HTTP DELETE request using the Client connection.

Panics

This will panic if a malformed URL is passed.

Errors

Returns errors from the middleware, http backend, and network sockets.

Examples

let client = surf::client();
let string = client.delete("https://httpbin.org/delete").recv_string().await?;

pub fn connect(&self, uri: impl AsRef<str>) -> RequestBuilder

Notable traits for RequestBuilder

impl Future for RequestBuilder type Output = Result<Response>;
[src]

Perform an HTTP CONNECT request using the Client connection.

Panics

This will panic if a malformed URL is passed.

Errors

Returns errors from the middleware, http backend, and network sockets.

Examples

let client = surf::client();
let string = client.connect("https://httpbin.org/connect").recv_string().await?;

pub fn options(&self, uri: impl AsRef<str>) -> RequestBuilder

Notable traits for RequestBuilder

impl Future for RequestBuilder type Output = Result<Response>;
[src]

Perform an HTTP OPTIONS request using the Client connection.

Panics

This will panic if a malformed URL is passed.

Errors

Returns errors from the middleware, http backend, and network sockets.

Examples

let client = surf::client();
let string = client.options("https://httpbin.org/options").recv_string().await?;

pub fn trace(&self, uri: impl AsRef<str>) -> RequestBuilder

Notable traits for RequestBuilder

impl Future for RequestBuilder type Output = Result<Response>;
[src]

Perform an HTTP TRACE request using the Client connection.

Panics

This will panic if a malformed URL is passed.

Errors

Returns errors from the middleware, http backend, and network sockets.

Examples

let client = surf::client();
let string = client.trace("https://httpbin.org/trace").recv_string().await?;

pub fn patch(&self, uri: impl AsRef<str>) -> RequestBuilder

Notable traits for RequestBuilder

impl Future for RequestBuilder type Output = Result<Response>;
[src]

Perform an HTTP PATCH request using the Client connection.

Panics

This will panic if a malformed URL is passed.

Errors

Returns errors from the middleware, http backend, and network sockets.

Examples

let client = surf::client();
let string = client.patch("https://httpbin.org/patch").recv_string().await?;

pub fn set_base_url(&mut self, base: Url)[src]

Sets the base URL for this client. All request URLs will be relative to this path.

Examples

let mut client = surf::client();
client.set_base_url(Url::parse("http://example.com/api/v1")?);
client.get("/posts.json").recv_json().await?; /// http://example.com/api/v1/posts.json

Trait Implementations

impl Clone for Client[src]

fn clone(&self) -> Self[src]

Clones the Client.

This copies the middleware stack from the original, but shares the HttpClient of the original. Note that individual middleware in the middleware stack are still shared by reference.

impl Debug for Client[src]

impl Default for Client[src]

Auto Trait Implementations

impl !RefUnwindSafe for Client

impl Send for Client

impl Sync for Client

impl Unpin for Client

impl !UnwindSafe for Client

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T> Instrument for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> Sealed<T> for T where
    T: ?Sized

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

impl<T> WithSubscriber for T[src]