pub struct VersionNegotiator { /* private fields */ }Expand description
版本协商器
从请求中提取 API 版本号,按配置的策略顺序尝试。
Implementations§
Source§impl VersionNegotiator
impl VersionNegotiator
Sourcepub fn new(default_version: ApiVersion) -> Self
pub fn new(default_version: ApiVersion) -> Self
创建新的版本协商器
Sourcepub fn with_supported_versions(self, versions: Vec<ApiVersion>) -> Self
pub fn with_supported_versions(self, versions: Vec<ApiVersion>) -> Self
设置支持的版本列表
Sourcepub fn with_strategies(self, strategies: Vec<VersionStrategy>) -> Self
pub fn with_strategies(self, strategies: Vec<VersionStrategy>) -> Self
设置策略优先级顺序
Sourcepub fn with_url_prefix(self, prefix: impl Into<String>) -> Self
pub fn with_url_prefix(self, prefix: impl Into<String>) -> Self
设置 URL 路径前缀(如 api、v 等)
Sourcepub fn with_query_param(self, name: impl Into<String>) -> Self
pub fn with_query_param(self, name: impl Into<String>) -> Self
设置 query 参数名
Sourcepub fn with_header_name(self, name: impl Into<String>) -> Self
pub fn with_header_name(self, name: impl Into<String>) -> Self
设置自定义 header 名
Sourcepub fn negotiate(
&self,
uri: &Uri,
headers: &HeaderMap,
) -> Result<ApiVersion, VersionError>
pub fn negotiate( &self, uri: &Uri, headers: &HeaderMap, ) -> Result<ApiVersion, VersionError>
从请求中协商版本号
按策略顺序尝试,首个成功的版本号即为协商结果。 若所有策略都未匹配,返回默认版本。
§返回
Ok(ApiVersion):协商成功(可能是匹配的版本或默认版本)Err(VersionError):客户端指定了不支持的版本
Trait Implementations§
Source§impl Clone for VersionNegotiator
impl Clone for VersionNegotiator
Source§fn clone(&self) -> VersionNegotiator
fn clone(&self) -> VersionNegotiator
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for VersionNegotiator
impl Debug for VersionNegotiator
Auto Trait Implementations§
impl Freeze for VersionNegotiator
impl RefUnwindSafe for VersionNegotiator
impl Send for VersionNegotiator
impl Sync for VersionNegotiator
impl Unpin for VersionNegotiator
impl UnsafeUnpin for VersionNegotiator
impl UnwindSafe for VersionNegotiator
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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>
Converts
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>
Converts
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.