pub struct RequestValidation {
pub body_schema: BodySchema,
pub dry_run: bool,
}Expand description
Route-scoped request-body validation (DW-047,
routes[].request_validation).
A minimal JSON-Schema subset the gateway validates the request body
against before the route action runs. A mismatch answers 400
validation_failed (the JSON error envelope carries the offending
instance paths); a match proceeds normally. The schema is compiled
at config publish time (an invalid schema fails validation); the
body is buffered up to the route’s limits.max_body_bytes (or a
1 MiB default when no limit is set) for validation, then replayed
to the action. See [JsonSchema] for the supported keywords.
Fields§
§body_schema: BodySchemaThe JSON Schema the request body must satisfy. A minimal subset
of JSON Schema Draft 2020-12 is supported: type, required,
properties, items, enum, minimum, maximum,
minLength, maxLength, and additionalProperties (bool or a
schema). $ref is NOT supported (inline your schemas). An
invalid schema fails config validation at publish time.
dry_run: boolSEC-14: dry-run mode. When true, the gateway evaluates the schema and records violations (log + metric) but does NOT reject the request — the body is forwarded to the upstream even when it fails validation. Useful for rolling out a new schema without breaking existing callers. Default false (reject on mismatch).
Trait Implementations§
Source§impl Clone for RequestValidation
impl Clone for RequestValidation
Source§fn clone(&self) -> RequestValidation
fn clone(&self) -> RequestValidation
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RequestValidation
impl Debug for RequestValidation
Source§impl<'de> Deserialize<'de> for RequestValidation
impl<'de> Deserialize<'de> for RequestValidation
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for RequestValidation
impl JsonSchema for RequestValidation
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl PartialEq for RequestValidation
impl PartialEq for RequestValidation
Source§impl Serialize for RequestValidation
impl Serialize for RequestValidation
impl StructuralPartialEq for RequestValidation
Auto Trait Implementations§
impl Freeze for RequestValidation
impl RefUnwindSafe for RequestValidation
impl Send for RequestValidation
impl Sync for RequestValidation
impl Unpin for RequestValidation
impl UnwindSafe for RequestValidation
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more