[−][src]Struct surf::Client
An HTTP client, capable of sending Request
s 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]
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]
&self,
req: impl Into<Request>
) -> BoxFuture<'static, Result<Response>>
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]
&'_ self,
req: impl Into<Request>
) -> Result<Vec<u8>>
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]
&'_ self,
req: impl Into<Request>
) -> Result<String>
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]
&'_ self,
req: impl Into<Request>
) -> Result<T>
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]
&'_ self,
req: impl Into<Request>
) -> Result<T>
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]
Notable traits for RequestBuilder
impl Future for RequestBuilder type Output = Result<Response>;
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]
Notable traits for RequestBuilder
impl Future for RequestBuilder type Output = Result<Response>;
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]
Notable traits for RequestBuilder
impl Future for RequestBuilder type Output = Result<Response>;
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]
Notable traits for RequestBuilder
impl Future for RequestBuilder type Output = Result<Response>;
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]
Notable traits for RequestBuilder
impl Future for RequestBuilder type Output = Result<Response>;
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]
Notable traits for RequestBuilder
impl Future for RequestBuilder type Output = Result<Response>;
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]
Notable traits for RequestBuilder
impl Future for RequestBuilder type Output = Result<Response>;
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]
Notable traits for RequestBuilder
impl Future for RequestBuilder type Output = Result<Response>;
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]
Notable traits for RequestBuilder
impl Future for RequestBuilder type Output = Result<Response>;
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.
fn clone_from(&mut self, source: &Self)
1.0.0[src]
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]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
fn instrument(self, span: Span) -> Instrumented<Self>
[src]
fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> Sealed<T> for T where
T: ?Sized,
T: ?Sized,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,
fn vzip(self) -> V
impl<T> WithSubscriber for T
[src]
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
[src]
S: Into<Dispatch>,