Struct ajars_surf::surf::Config
source · [−]#[non_exhaustive]pub struct Config {
pub base_url: Option<Url>,
pub headers: HashMap<HeaderName, HeaderValues, RandomState>,
pub http_config: Config,
pub http_client: Option<Arc<dyn HttpClient + 'static>>,
}
Expand description
Configuration for surf::Client
s and their underlying HTTP clients.
use std::convert::TryInto;
use surf::{Client, Config, Url};
let client: Client = Config::new()
.set_base_url(Url::parse("https://example.org")?)
.try_into()?;
let mut response = client.get("/").await?;
println!("{}", response.body_string().await?);
Fields (Non-exhaustive)
This struct is marked as non-exhaustive
Struct { .. }
syntax; cannot be matched against without a wildcard ..
; and struct update syntax will not work.base_url: Option<Url>
The base URL for a 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.
headers: HashMap<HeaderName, HeaderValues, RandomState>
Headers to be applied to every request made by this client.
http_config: Config
Underlying HTTP client config.
http_client: Option<Arc<dyn HttpClient + 'static>>
Optional custom http client.
Implementations
sourceimpl Config
impl Config
sourcepub fn add_header(
self,
name: impl Into<HeaderName>,
values: impl ToHeaderValues
) -> Result<Config, Error>
pub fn add_header(
self,
name: impl Into<HeaderName>,
values: impl ToHeaderValues
) -> Result<Config, Error>
Adds a header to be added to every request by this client.
Default: No extra headers.
use std::convert::TryInto;
use surf::{Client, Config};
use surf::http::auth::BasicAuth;
let auth = BasicAuth::new("Username", "Password");
let client: Client = Config::new()
.add_header(auth.name(), auth.value())?
.try_into()?;
sourcepub fn set_base_url(self, base: Url) -> Config
pub fn set_base_url(self, base: Url) -> Config
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.
Default: None
(internally).
use std::convert::TryInto;
use surf::{Client, Config, Url};
let client: Client = Config::new()
.set_base_url(Url::parse("https://example.org")?)
.try_into()?;
sourcepub fn set_http_keep_alive(self, keep_alive: bool) -> Config
pub fn set_http_keep_alive(self, keep_alive: bool) -> Config
Set HTTP/1.1 keep-alive
(connection pooling).
Default: true
.
Note: Does nothing on wasm-client
(or native-client
on wasm32
).
sourcepub fn set_tcp_no_delay(self, no_delay: bool) -> Config
pub fn set_tcp_no_delay(self, no_delay: bool) -> Config
Set TCP NO_DELAY
.
Default: false
.
Note: Does nothing on wasm-client
(or native-client
on wasm32
).
sourcepub fn set_timeout(self, timeout: Option<Duration>) -> Config
pub fn set_timeout(self, timeout: Option<Duration>) -> Config
Set connection timeout duration.
Passing None
will remove the timeout.
Default: Some(Duration::from_secs(60))
.
use std::convert::TryInto;
use std::time::Duration;
use surf::{Client, Config};
let client: Client = Config::new()
.set_timeout(Some(Duration::from_secs(5)))
.try_into()?;
sourcepub fn set_max_connections_per_host(
self,
max_connections_per_host: usize
) -> Config
pub fn set_max_connections_per_host(
self,
max_connections_per_host: usize
) -> Config
Set the maximum number of simultaneous connections that this client is allowed to keep open to individual hosts at one time.
Default: 50
.
This number is based on a few random benchmarks and see whatever gave decent perf vs resource use in Orogene.
Note: The behavior of this is different depending on the backend in use.
h1-client
:0
is disallowed and asserts as otherwise it would cause a semaphore deadlock.curl-client
:0
allows for limitless connections per host.hyper-client
: No effect. Hyper does not support such an option.wasm-client
: No effect. Web browsers do not support such an option.
sourcepub fn set_http_client(self, http_client: impl HttpClient) -> Config
pub fn set_http_client(self, http_client: impl HttpClient) -> Config
Override the http client entirely.
When using this, any underlying http_client::Config
http configuration will be ignored.
use std::convert::TryInto;
use surf::{Client, Config};
// Connect directly to a Tide server, e.g. for testing.
let server = tide::new();
let client: Client = Config::new()
.set_http_client(server)
.try_into()?;
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for Config
impl Send for Config
impl Sync for Config
impl Unpin for Config
impl !UnwindSafe for Config
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more