Struct mio_surf::Client [−][src]
An HTTP client, capable of sending Request
s and running a middleware stack.
Can be optionally set with a base url.
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 Client
instance.
Examples
let client = surf::Client::new(); let req = surf::get("https://httpbin.org/get"); let res = client.send(req).await?;
pub fn with_http_client<C: HttpClient>(http_client: C) -> Self
[src]
Create a new Client
instance with an http_client::HttpClient
backend.
Examples
use http_client::isahc::IsahcClient; let client = surf::Client::with_http_client(IsahcClient::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 async fn send(&self, req: impl Into<Request>) -> 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 a 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 a 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 a 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 a 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 URL.
Note: a trailing slash is significant. Without it, the last path component is considered to be a “file” name to be removed to get at the “directory” that is used as the base.
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.
pub 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
[src]
impl Send for Client
[src]
impl Sync for Client
[src]
impl Unpin for Client
[src]
impl !UnwindSafe for Client
[src]
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,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub 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> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub 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.
pub 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.
pub 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>,
pub fn vzip(self) -> V
impl<T> WithSubscriber for T
[src]
pub fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
[src]
S: Into<Dispatch>,