Struct surf::Client [−][src]
pub struct Client { /* fields omitted */ }
Expand description
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
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?;
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());
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?;
Send a Request
using this client.
Client middleware is run before per-request middleware.
Examples
let req = surf::get("https://httpbin.org/get");
let client = surf::client();
let res = client.send(req).await?;
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);
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);
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);
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 RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
pub fn get(&self, uri: impl AsRef<str>) -> RequestBuilderⓘNotable traits for RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
impl Future for RequestBuilder type Output = Result<Response>;
pub fn head(&self, uri: impl AsRef<str>) -> RequestBuilderⓘNotable traits for RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
pub fn head(&self, uri: impl AsRef<str>) -> RequestBuilderⓘNotable traits for RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
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 RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
pub fn post(&self, uri: impl AsRef<str>) -> RequestBuilderⓘNotable traits for RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
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 RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
pub fn put(&self, uri: impl AsRef<str>) -> RequestBuilderⓘNotable traits for RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
impl Future for RequestBuilder type Output = Result<Response>;
pub fn delete(&self, uri: impl AsRef<str>) -> RequestBuilderⓘNotable traits for RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
pub fn delete(&self, uri: impl AsRef<str>) -> RequestBuilderⓘNotable traits for RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
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 RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
pub fn connect(&self, uri: impl AsRef<str>) -> RequestBuilderⓘNotable traits for RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
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 RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
pub fn options(&self, uri: impl AsRef<str>) -> RequestBuilderⓘNotable traits for RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
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 RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
pub fn trace(&self, uri: impl AsRef<str>) -> RequestBuilderⓘNotable traits for RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
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 RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
pub fn patch(&self, uri: impl AsRef<str>) -> RequestBuilderⓘNotable traits for RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
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 request(&self, verb: Method, uri: impl AsRef<str>) -> RequestBuilderⓘNotable traits for RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
pub fn request(&self, verb: Method, uri: impl AsRef<str>) -> RequestBuilderⓘNotable traits for RequestBuilderimpl Future for RequestBuilder type Output = Result<Response>;
impl Future for RequestBuilder type Output = Result<Response>;
Perform a HTTP request with the given verb 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
use http_types::Method;
let client = surf::client();
let req = client.request(Method::Get, "http://httpbin.org/get");
let res = client.send(req).await?;
👎 Deprecated since 6.5.0: Please use Config
instead
Please use Config
instead
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
Clones the Client.
This copies the middleware stack from the original, but shares
the HttpClient
and http client config of the original.
Note that individual middleware in the middleware stack are
still shared by reference.
Performs copy-assignment from source
. Read more
Auto Trait Implementations
impl !RefUnwindSafe for Client
impl !UnwindSafe for Client
Blanket Implementations
Mutably borrows from an owned value. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
type Output = T
type Output = T
Should always be Self
pub fn vzip(self) -> V
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more