pub trait ResponseInterceptor: Send + Sync {
// Required method
fn intercept<'a>(
&'a self,
ctx: &'a ResponseInterceptorContext<'a>,
response: Response,
) -> BoxFuture<'a, Response>;
// Provided method
fn name(&self) -> &'static str { ... }
}Expand description
A response interceptor that processes responses after handler execution.
Unlike the full Middleware trait, ResponseInterceptor only handles
the post-handler phase, making it simpler to implement for response-only
processing like:
- Adding timing headers
- Transforming response bodies
- Adding debug information
- Logging response details
§Example
ⓘ
use fastapi_core::middleware::{ResponseInterceptor, ResponseInterceptorContext};
struct TimingInterceptor {
start_time: Instant,
}
impl ResponseInterceptor for TimingInterceptor {
fn intercept(&self, ctx: &ResponseInterceptorContext, response: Response) -> Response {
let elapsed = self.start_time.elapsed();
response.header("X-Response-Time", format!("{}ms", elapsed.as_millis()).into_bytes())
}
}