pub struct RouteMatch {
pub path: PathMatch,
pub host: Option<String>,
pub methods: Vec<String>,
pub headers: BTreeMap<String, String>,
pub query: Vec<NameValueMatch>,
pub cookies: Vec<NameValueMatch>,
pub accept: Option<String>,
}Expand description
Matching rules for incoming requests.
Fields§
§path: PathMatch§host: Option<String>Exact host match (e.g. api.example.com).
methods: Vec<String>Allowed HTTP methods; empty means all methods.
headers: BTreeMap<String, String>Exact header matches.
query: Vec<NameValueMatch>Query-parameter matches; every entry must match (AND). Name-only
entries match on presence; a value requires an exact raw match (no
percent-decoding in v1).
Cookie matches (parsed from the Cookie header); every entry must
match (AND). Name-only entries match on presence; a value requires
an exact match (no cookie-unquoting in v1).
accept: Option<String>Media-type version selection (DW-048): a bare type/subtype the
request’s Accept header must name explicitly, e.g.
application/vnd.acme.v2+json. A comma-separated Accept list
matches on ANY entry; parameters and q-values on the request side
are ignored; wildcard entries (*/*, type/*) and a missing
Accept header never match — version selection requires the client
to NAME the version, so unconstrained clients fall through to the
route without this criterion (the unversioned default). Like every
non-path criterion this is AND-ed and applied AFTER path
resolution: a miss does not fall through to another route (404),
and two routes cannot share one path to offer multiple versions —
version families use distinct paths (/v1/, /v2/) or this
criterion on a versioned path. Validation rejects anything but a
bare lowercase-able type/subtype (config::versioning owns the
grammar). Responses of a matched route carry Vary: Accept
(merged), so shared caches key on the negotiated representation.
Trait Implementations§
Source§impl Clone for RouteMatch
impl Clone for RouteMatch
Source§fn clone(&self) -> RouteMatch
fn clone(&self) -> RouteMatch
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RouteMatch
impl Debug for RouteMatch
Source§impl<'de> Deserialize<'de> for RouteMatch
impl<'de> Deserialize<'de> for RouteMatch
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 RouteMatch
impl JsonSchema for RouteMatch
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 RouteMatch
impl PartialEq for RouteMatch
Source§impl Serialize for RouteMatch
impl Serialize for RouteMatch
impl StructuralPartialEq for RouteMatch
Auto Trait Implementations§
impl Freeze for RouteMatch
impl RefUnwindSafe for RouteMatch
impl Send for RouteMatch
impl Sync for RouteMatch
impl Unpin for RouteMatch
impl UnwindSafe for RouteMatch
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