Struct surf::Config[][src]

#[non_exhaustive]
pub struct Config { pub base_url: Option<Url>, pub headers: HashMap<HeaderName, HeaderValues>, pub http_config: HttpConfig, pub http_client: Option<Arc<dyn HttpClient>>, }
Expand description

Configuration for surf::Clients 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
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional 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>

Headers to be applied to every request made by this client.

http_config: HttpConfig

Underlying HTTP client config.

http_client: Option<Arc<dyn HttpClient>>

Optional custom http client.

Implementations

Construct new empty config.

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()?;

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()?;

Set HTTP/1.1 keep-alive (connection pooling).

Default: true.

Note: Does nothing on wasm-client (or native-client on wasm32).

Set TCP NO_DELAY.

Default: false.

Note: Does nothing on wasm-client (or native-client on wasm32).

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()?;

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.

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

Performs the conversion.

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Performs the conversion.

Should always be Self

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

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