pub struct RequestInspectionMiddleware { /* private fields */ }Expand description
Development middleware that logs detailed, human-readable request/response information using arrow-style formatting.
This middleware is designed for development and debugging. It outputs concise inspection lines showing request flow:
--> POST /api/users
Content-Type: application/json
Content-Length: 42
{"name": "Alice"}
<-- 201 Created (12ms)
Content-Type: application/json
{"id": 1, "name": "Alice"}§Features
- Configurable verbosity: Minimal (one-liner), Normal (+ headers), Verbose (+ body preview with JSON pretty-printing)
- Slow request highlighting: Marks requests exceeding a threshold
- Sensitive header filtering: Redacts authorization, cookie, etc.
- JSON pretty-printing: Detects JSON bodies and formats them
- Body size limits: Truncates large bodies to a configurable max
§Example
ⓘ
use fastapi_core::middleware::RequestInspectionMiddleware;
let inspector = RequestInspectionMiddleware::new()
.verbosity(InspectionVerbosity::Verbose)
.slow_threshold_ms(500)
.max_body_preview(4096);
let mut stack = MiddlewareStack::new();
stack.push(inspector);Implementations§
Source§impl RequestInspectionMiddleware
impl RequestInspectionMiddleware
Sourcepub fn log_config(self, config: LogConfig) -> Self
pub fn log_config(self, config: LogConfig) -> Self
Set the logging configuration.
Sourcepub fn verbosity(self, level: InspectionVerbosity) -> Self
pub fn verbosity(self, level: InspectionVerbosity) -> Self
Set the verbosity level.
Sourcepub fn slow_threshold_ms(self, ms: u64) -> Self
pub fn slow_threshold_ms(self, ms: u64) -> Self
Set the threshold (in milliseconds) above which requests are flagged as slow.
Sourcepub fn max_body_preview(self, max: usize) -> Self
pub fn max_body_preview(self, max: usize) -> Self
Set the maximum number of bytes to show in body previews.
Sourcepub fn redact_header(self, name: impl Into<String>) -> Self
pub fn redact_header(self, name: impl Into<String>) -> Self
Add a header name to the redaction set (case-insensitive).
Trait Implementations§
Source§impl Middleware for RequestInspectionMiddleware
impl Middleware for RequestInspectionMiddleware
Source§fn before<'a>(
&'a self,
ctx: &'a RequestContext,
req: &'a mut Request,
) -> BoxFuture<'a, ControlFlow>
fn before<'a>( &'a self, ctx: &'a RequestContext, req: &'a mut Request, ) -> BoxFuture<'a, ControlFlow>
Called before the handler executes. Read more
Auto Trait Implementations§
impl Freeze for RequestInspectionMiddleware
impl RefUnwindSafe for RequestInspectionMiddleware
impl Send for RequestInspectionMiddleware
impl Sync for RequestInspectionMiddleware
impl Unpin for RequestInspectionMiddleware
impl UnwindSafe for RequestInspectionMiddleware
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, _span: NoopSpan) -> Self
fn instrument(self, _span: NoopSpan) -> Self
Instruments this future with a span (no-op when disabled).
Source§fn in_current_span(self) -> Self
fn in_current_span(self) -> Self
Instruments this future with the current span (no-op when disabled).