#[non_exhaustive]pub struct RequestSummary {
pub method: String,
pub url_path: String,
pub headers: Vec<(String, String)>,
pub body_json: Option<Value>,
pub body_truncated: bool,
pub body_len: Option<usize>,
}Expand description
Key fields from the incoming HTTP request.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.method: String§url_path: String§headers: Vec<(String, String)>Request headers, redacted per TraceConfig’s policy at capture
(RFC 040) — not otherwise filtered by name. A redacted header
keeps its name and carries REDACTED_HEADER_VALUE instead of
its real value, so its presence stays visible.
body_json: Option<Value>Captured JSON body (RFC 023). Present only when TraceConfig::capture_body
is true and the request body is valid JSON within the size cap.
body_truncated: booltrue when the body was omitted because it exceeded max_body_bytes.
body_len: Option<usize>Byte length of the request body, if one arrived (RFC 050) —
presence and size only, never content: no bytes, no snippet,
no preview. Populated for every body, JSON included — required
2026-08-17 by review of this RFC, which found the original,
JSON-excluding version left the common case (a JSON body with
capture_body at its default false) still indistinguishable
from no body at all, the exact ambiguity this RFC exists to
close. So the three states this field distinguishes, together
with body_json, are: both absent (no body); body_len present
and body_json present (body present, JSON captured); body_len
present and body_json absent (body present, not captured —
non-JSON, capture disabled, or over max_body_bytes; the last of
those is further distinguished by body_truncated).
Implementations§
Source§impl RequestSummary
impl RequestSummary
Sourcepub fn new(
method: String,
url_path: String,
headers: Vec<(String, String)>,
body_len: Option<usize>,
config: &TraceConfig,
) -> Self
pub fn new( method: String, url_path: String, headers: Vec<(String, String)>, body_len: Option<usize>, config: &TraceConfig, ) -> Self
Construct from a live request’s headers, applying config’s
redaction policy (RFC 040). This is the only place header
redaction happens — do not build RequestSummary from live
request headers any other way; a future formatter or display
path must not need to know about redaction at all.
body_len should be the source request’s own ParsedRequest.body_len
(RFC 050) — pass it through unconditionally, JSON body or not;
enrich_with_body populates body_json separately for the JSON
case, and the two fields together carry the distinction.
Trait Implementations§
Source§impl Clone for RequestSummary
impl Clone for RequestSummary
Source§fn clone(&self) -> RequestSummary
fn clone(&self) -> RequestSummary
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more