Trait poem::middleware::Middleware
source · pub trait Middleware<E: Endpoint> {
type Output: Endpoint;
// Required method
fn transform(&self, ep: E) -> Self::Output;
}
Expand description
Represents a middleware trait.
§Create you own middleware
use poem::{
handler, test::TestClient, web::Data, Endpoint, EndpointExt, Middleware, Request, Result,
};
/// A middleware that extract token from HTTP headers.
struct TokenMiddleware;
impl<E: Endpoint> Middleware<E> for TokenMiddleware {
type Output = TokenMiddlewareImpl<E>;
fn transform(&self, ep: E) -> Self::Output {
TokenMiddlewareImpl { ep }
}
}
/// The new endpoint type generated by the TokenMiddleware.
struct TokenMiddlewareImpl<E> {
ep: E,
}
const TOKEN_HEADER: &str = "X-Token";
/// Token data
#[derive(Clone)]
struct Token(String);
impl<E: Endpoint> Endpoint for TokenMiddlewareImpl<E> {
type Output = E::Output;
async fn call(&self, mut req: Request) -> Result<Self::Output> {
if let Some(value) = req
.headers()
.get(TOKEN_HEADER)
.and_then(|value| value.to_str().ok())
{
// Insert token data to extensions of request.
let token = value.to_string();
req.extensions_mut().insert(Token(token));
}
// call the next endpoint.
self.ep.call(req).await
}
}
#[handler]
async fn index(Data(token): Data<&Token>) -> String {
token.0.clone()
}
// Use the `TokenMiddleware` middleware to convert the `index` endpoint.
let ep = index.with(TokenMiddleware);
let mut resp = TestClient::new(ep)
.get("/")
.header(TOKEN_HEADER, "abc")
.send()
.await;
resp.assert_status_is_ok();
resp.assert_text("abc").await;
§Create middleware with functions
use std::sync::Arc;
use poem::{
handler, test::TestClient, web::Data, Endpoint, EndpointExt, IntoResponse, Request, Result,
};
const TOKEN_HEADER: &str = "X-Token";
#[handler]
async fn index(Data(token): Data<&Token>) -> String {
token.0.clone()
}
/// Token data
#[derive(Clone)]
struct Token(String);
async fn token_middleware<E: Endpoint>(next: E, mut req: Request) -> Result<E::Output> {
if let Some(value) = req
.headers()
.get(TOKEN_HEADER)
.and_then(|value| value.to_str().ok())
{
// Insert token data to extensions of request.
let token = value.to_string();
req.extensions_mut().insert(Token(token));
}
// call the next endpoint.
next.call(req).await
}
let ep = index.around(token_middleware);
let cli = TestClient::new(ep);
let resp = cli.get("/").header(TOKEN_HEADER, "abc").send().await;
resp.assert_status_is_ok();
resp.assert_text("abc").await;
Required Associated Types§
sourcetype Output: Endpoint
type Output: Endpoint
New endpoint type.
If you don’t know what type to use, then you can use
BoxEndpoint
, which will bring some
performance loss, but it is insignificant.
Required Methods§
Implementations on Foreign Types§
source§impl<E, T1, T2> Middleware<E> for (T1, T2)
impl<E, T1, T2> Middleware<E> for (T1, T2)
type Output = <T2 as Middleware<<T1 as Middleware<E>>::Output>>::Output
fn transform(&self, ep: E) -> Self::Output
source§impl<E, T1, T2, T3> Middleware<E> for (T1, T2, T3)
impl<E, T1, T2, T3> Middleware<E> for (T1, T2, T3)
type Output = <T3 as Middleware<<T2 as Middleware<<T1 as Middleware<E>>::Output>>::Output>>::Output
fn transform(&self, ep: E) -> Self::Output
source§impl<E, T1, T2, T3, T4> Middleware<E> for (T1, T2, T3, T4)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
impl<E, T1, T2, T3, T4> Middleware<E> for (T1, T2, T3, T4)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
type Output = <T4 as Middleware<<T3 as Middleware<<T2 as Middleware<<T1 as Middleware<E>>::Output>>::Output>>::Output>>::Output
fn transform(&self, ep: E) -> Self::Output
source§impl<E, T1, T2, T3, T4, T5> Middleware<E> for (T1, T2, T3, T4, T5)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
impl<E, T1, T2, T3, T4, T5> Middleware<E> for (T1, T2, T3, T4, T5)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
type Output = <T5 as Middleware<<T4 as Middleware<<T3 as Middleware<<T2 as Middleware<<T1 as Middleware<E>>::Output>>::Output>>::Output>>::Output>>::Output
fn transform(&self, ep: E) -> Self::Output
source§impl<E, T1, T2, T3, T4, T5, T6> Middleware<E> for (T1, T2, T3, T4, T5, T6)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
impl<E, T1, T2, T3, T4, T5, T6> Middleware<E> for (T1, T2, T3, T4, T5, T6)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
type Output = <T6 as Middleware<<T5 as Middleware<<T4 as Middleware<<T3 as Middleware<<T2 as Middleware<<T1 as Middleware<E>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output
fn transform(&self, ep: E) -> Self::Output
source§impl<E, T1, T2, T3, T4, T5, T6, T7> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
impl<E, T1, T2, T3, T4, T5, T6, T7> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
type Output = <T7 as Middleware<<T6 as Middleware<<T5 as Middleware<<T4 as Middleware<<T3 as Middleware<<T2 as Middleware<<T1 as Middleware<E>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output
fn transform(&self, ep: E) -> Self::Output
source§impl<E, T1, T2, T3, T4, T5, T6, T7, T8> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
impl<E, T1, T2, T3, T4, T5, T6, T7, T8> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
type Output = <T8 as Middleware<<T7 as Middleware<<T6 as Middleware<<T5 as Middleware<<T4 as Middleware<<T3 as Middleware<<T2 as Middleware<<T1 as Middleware<E>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output
fn transform(&self, ep: E) -> Self::Output
source§impl<E, T1, T2, T3, T4, T5, T6, T7, T8, T9> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8, T9)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
T9: Middleware<T8::Output>,
impl<E, T1, T2, T3, T4, T5, T6, T7, T8, T9> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8, T9)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
T9: Middleware<T8::Output>,
type Output = <T9 as Middleware<<T8 as Middleware<<T7 as Middleware<<T6 as Middleware<<T5 as Middleware<<T4 as Middleware<<T3 as Middleware<<T2 as Middleware<<T1 as Middleware<E>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output
fn transform(&self, ep: E) -> Self::Output
source§impl<E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
T9: Middleware<T8::Output>,
T10: Middleware<T9::Output>,
impl<E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
T9: Middleware<T8::Output>,
T10: Middleware<T9::Output>,
type Output = <T10 as Middleware<<T9 as Middleware<<T8 as Middleware<<T7 as Middleware<<T6 as Middleware<<T5 as Middleware<<T4 as Middleware<<T3 as Middleware<<T2 as Middleware<<T1 as Middleware<E>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output
fn transform(&self, ep: E) -> Self::Output
source§impl<E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
T9: Middleware<T8::Output>,
T10: Middleware<T9::Output>,
T11: Middleware<T10::Output>,
impl<E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
T9: Middleware<T8::Output>,
T10: Middleware<T9::Output>,
T11: Middleware<T10::Output>,
type Output = <T11 as Middleware<<T10 as Middleware<<T9 as Middleware<<T8 as Middleware<<T7 as Middleware<<T6 as Middleware<<T5 as Middleware<<T4 as Middleware<<T3 as Middleware<<T2 as Middleware<<T1 as Middleware<E>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output
fn transform(&self, ep: E) -> Self::Output
source§impl<E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
T9: Middleware<T8::Output>,
T10: Middleware<T9::Output>,
T11: Middleware<T10::Output>,
T12: Middleware<T11::Output>,
impl<E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
T9: Middleware<T8::Output>,
T10: Middleware<T9::Output>,
T11: Middleware<T10::Output>,
T12: Middleware<T11::Output>,
type Output = <T12 as Middleware<<T11 as Middleware<<T10 as Middleware<<T9 as Middleware<<T8 as Middleware<<T7 as Middleware<<T6 as Middleware<<T5 as Middleware<<T4 as Middleware<<T3 as Middleware<<T2 as Middleware<<T1 as Middleware<E>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output
fn transform(&self, ep: E) -> Self::Output
source§impl<E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
T9: Middleware<T8::Output>,
T10: Middleware<T9::Output>,
T11: Middleware<T10::Output>,
T12: Middleware<T11::Output>,
T13: Middleware<T12::Output>,
impl<E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
T9: Middleware<T8::Output>,
T10: Middleware<T9::Output>,
T11: Middleware<T10::Output>,
T12: Middleware<T11::Output>,
T13: Middleware<T12::Output>,
type Output = <T13 as Middleware<<T12 as Middleware<<T11 as Middleware<<T10 as Middleware<<T9 as Middleware<<T8 as Middleware<<T7 as Middleware<<T6 as Middleware<<T5 as Middleware<<T4 as Middleware<<T3 as Middleware<<T2 as Middleware<<T1 as Middleware<E>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output
fn transform(&self, ep: E) -> Self::Output
source§impl<E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
T9: Middleware<T8::Output>,
T10: Middleware<T9::Output>,
T11: Middleware<T10::Output>,
T12: Middleware<T11::Output>,
T13: Middleware<T12::Output>,
T14: Middleware<T13::Output>,
impl<E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
T9: Middleware<T8::Output>,
T10: Middleware<T9::Output>,
T11: Middleware<T10::Output>,
T12: Middleware<T11::Output>,
T13: Middleware<T12::Output>,
T14: Middleware<T13::Output>,
type Output = <T14 as Middleware<<T13 as Middleware<<T12 as Middleware<<T11 as Middleware<<T10 as Middleware<<T9 as Middleware<<T8 as Middleware<<T7 as Middleware<<T6 as Middleware<<T5 as Middleware<<T4 as Middleware<<T3 as Middleware<<T2 as Middleware<<T1 as Middleware<E>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output
fn transform(&self, ep: E) -> Self::Output
source§impl<E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
T9: Middleware<T8::Output>,
T10: Middleware<T9::Output>,
T11: Middleware<T10::Output>,
T12: Middleware<T11::Output>,
T13: Middleware<T12::Output>,
T14: Middleware<T13::Output>,
T15: Middleware<T14::Output>,
impl<E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
T9: Middleware<T8::Output>,
T10: Middleware<T9::Output>,
T11: Middleware<T10::Output>,
T12: Middleware<T11::Output>,
T13: Middleware<T12::Output>,
T14: Middleware<T13::Output>,
T15: Middleware<T14::Output>,
type Output = <T15 as Middleware<<T14 as Middleware<<T13 as Middleware<<T12 as Middleware<<T11 as Middleware<<T10 as Middleware<<T9 as Middleware<<T8 as Middleware<<T7 as Middleware<<T6 as Middleware<<T5 as Middleware<<T4 as Middleware<<T3 as Middleware<<T2 as Middleware<<T1 as Middleware<E>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output
fn transform(&self, ep: E) -> Self::Output
source§impl<E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
T9: Middleware<T8::Output>,
T10: Middleware<T9::Output>,
T11: Middleware<T10::Output>,
T12: Middleware<T11::Output>,
T13: Middleware<T12::Output>,
T14: Middleware<T13::Output>,
T15: Middleware<T14::Output>,
T16: Middleware<T15::Output>,
impl<E, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Middleware<E> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)where
E: Endpoint,
T1: Middleware<E>,
T2: Middleware<T1::Output>,
T3: Middleware<T2::Output>,
T4: Middleware<T3::Output>,
T5: Middleware<T4::Output>,
T6: Middleware<T5::Output>,
T7: Middleware<T6::Output>,
T8: Middleware<T7::Output>,
T9: Middleware<T8::Output>,
T10: Middleware<T9::Output>,
T11: Middleware<T10::Output>,
T12: Middleware<T11::Output>,
T13: Middleware<T12::Output>,
T14: Middleware<T13::Output>,
T15: Middleware<T14::Output>,
T16: Middleware<T15::Output>,
type Output = <T16 as Middleware<<T15 as Middleware<<T14 as Middleware<<T13 as Middleware<<T12 as Middleware<<T11 as Middleware<<T10 as Middleware<<T9 as Middleware<<T8 as Middleware<<T7 as Middleware<<T6 as Middleware<<T5 as Middleware<<T4 as Middleware<<T3 as Middleware<<T2 as Middleware<<T1 as Middleware<E>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output>>::Output
fn transform(&self, ep: E) -> Self::Output
Implementors§
source§impl<E> Middleware<E> for CookieJarManagerwhere
E: Endpoint,
impl<E> Middleware<E> for CookieJarManagerwhere
E: Endpoint,
type Output = CookieJarManagerEndpoint<E>
source§impl<E> Middleware<E> for ForceHttpswhere
E: Endpoint,
impl<E> Middleware<E> for ForceHttpswhere
E: Endpoint,
source§impl<E, T> Middleware<E> for AddData<T>
impl<E, T> Middleware<E> for AddData<T>
type Output = AddDataEndpoint<E, T>
source§impl<E: Endpoint> Middleware<E> for CookieSession
Available on crate feature session
only.
impl<E: Endpoint> Middleware<E> for CookieSession
Available on crate feature
session
only.type Output = CookieJarManagerEndpoint<CookieSessionEndpoint<E>>
source§impl<E: Endpoint> Middleware<E> for Compression
impl<E: Endpoint> Middleware<E> for Compression
type Output = CompressionEndpoint<E>
source§impl<E: Endpoint> Middleware<E> for Cors
impl<E: Endpoint> Middleware<E> for Cors
type Output = CorsEndpoint<E>
source§impl<E: Endpoint> Middleware<E> for Csrf
impl<E: Endpoint> Middleware<E> for Csrf
type Output = CookieJarManagerEndpoint<CsrfEndpoint<E>>
source§impl<E: Endpoint> Middleware<E> for NormalizePath
impl<E: Endpoint> Middleware<E> for NormalizePath
type Output = NormalizePathEndpoint<E>
source§impl<E: Endpoint> Middleware<E> for OpenTelemetryMetrics
impl<E: Endpoint> Middleware<E> for OpenTelemetryMetrics
type Output = OpenTelemetryMetricsEndpoint<E>
source§impl<E: Endpoint> Middleware<E> for PropagateHeader
impl<E: Endpoint> Middleware<E> for PropagateHeader
type Output = PropagateHeaderEndpoint<E>
source§impl<E: Endpoint> Middleware<E> for SensitiveHeader
impl<E: Endpoint> Middleware<E> for SensitiveHeader
type Output = SensitiveHeaderEndpoint<E>
source§impl<E: Endpoint> Middleware<E> for SetHeader
impl<E: Endpoint> Middleware<E> for SetHeader
type Output = SetHeaderEndpoint<E>
source§impl<E: Endpoint> Middleware<E> for SizeLimit
impl<E: Endpoint> Middleware<E> for SizeLimit
type Output = SizeLimitEndpoint<E>
source§impl<E: Endpoint> Middleware<E> for TokioMetrics
impl<E: Endpoint> Middleware<E> for TokioMetrics
type Output = TokioMetricsEndpoint<E>
source§impl<E: Endpoint> Middleware<E> for Tracing
impl<E: Endpoint> Middleware<E> for Tracing
type Output = TracingEndpoint<E>
source§impl<E: Endpoint, H: PanicHandler> Middleware<E> for CatchPanic<H>
impl<E: Endpoint, H: PanicHandler> Middleware<E> for CatchPanic<H>
type Output = CatchPanicEndpoint<E, H>
source§impl<T, E> Middleware<E> for OpenTelemetryTracing<T>
impl<T, E> Middleware<E> for OpenTelemetryTracing<T>
type Output = OpenTelemetryTracingEndpoint<T, E>
source§impl<T, E, E2> Middleware<E> for FnMiddleware<T>
impl<T, E, E2> Middleware<E> for FnMiddleware<T>
source§impl<T: SessionStorage, E: Endpoint> Middleware<E> for ServerSession<T>
Available on crate feature session
only.
impl<T: SessionStorage, E: Endpoint> Middleware<E> for ServerSession<T>
Available on crate feature
session
only.