pub struct SetRequestHeaderLayer<M> { /* private fields */ }Available on crate feature
set-header only.Expand description
Layer that applies SetRequestHeader which adds a request header.
§Example
Setting a header from a fixed value
use http::header::{HeaderValue, USER_AGENT};
use pretty_assertions::assert_eq;
use tower_layer::Layer as _;
use tower_reqwest::set_header::SetRequestHeaderLayer;
use tower_service::Service as _;
use wiremock::{
Mock, MockServer, ResponseTemplate,
matchers::{method, path},
};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Start a mock server.
let mock_server = MockServer::start().await;
Mock::given(method("GET"))
.and(path("/test"))
.respond_with(move |request: &wiremock::Request| {
eprintln!(
"Received request with user agent {:?}",
request.headers[USER_AGENT]
);
ResponseTemplate::new(200)
})
.mount(&mock_server)
.await;
// Create a new client with the `SetRequestHeaderLayer` layer.
let user_agent_value = HeaderValue::from_static("My-Custom-User-Agent/1.0");
let response = SetRequestHeaderLayer::overriding(USER_AGENT, user_agent_value)
.layer(reqwest::Client::new())
// Send a request to the mock server.
.call(reqwest::Request::new(
reqwest::Method::GET,
format!("{}/test", mock_server.uri()).parse()?,
))
.await?;
// Check that the request was successful.
assert_eq!(response.status(), 200);
Ok(())
}Implementations§
Source§impl<M> SetRequestHeaderLayer<M>
impl<M> SetRequestHeaderLayer<M>
Sourcepub fn overriding(header_name: HeaderName, make: M) -> Self
pub fn overriding(header_name: HeaderName, make: M) -> Self
Create a new SetRequestHeaderLayer.
If a previous value exists for the same header, it is removed and replaced with the new header value.
Sourcepub fn appending(header_name: HeaderName, make: M) -> Self
pub fn appending(header_name: HeaderName, make: M) -> Self
Create a new SetRequestHeaderLayer.
The new header is always added, preserving any existing values. If previous values exist, the header will have multiple values.
Sourcepub fn if_not_present(header_name: HeaderName, make: M) -> Self
pub fn if_not_present(header_name: HeaderName, make: M) -> Self
Create a new SetRequestHeaderLayer.
If a previous value exists for the header, the new value is not inserted.
Trait Implementations§
Source§impl<M> Clone for SetRequestHeaderLayer<M>where
M: Clone,
impl<M> Clone for SetRequestHeaderLayer<M>where
M: Clone,
Source§impl<M> Debug for SetRequestHeaderLayer<M>
impl<M> Debug for SetRequestHeaderLayer<M>
Auto Trait Implementations§
impl<M> !Freeze for SetRequestHeaderLayer<M>
impl<M> RefUnwindSafe for SetRequestHeaderLayer<M>where
M: RefUnwindSafe,
impl<M> Send for SetRequestHeaderLayer<M>where
M: Send,
impl<M> Sync for SetRequestHeaderLayer<M>where
M: Sync,
impl<M> Unpin for SetRequestHeaderLayer<M>where
M: Unpin,
impl<M> UnwindSafe for SetRequestHeaderLayer<M>where
M: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more