rustapi_openapi/versioning/mod.rs
1//! API Versioning support for OpenAPI
2//!
3//! This module provides comprehensive API versioning capabilities including:
4//!
5//! - Version parsing and comparison
6//! - Multiple versioning strategies (path, header, query, accept header)
7//! - Version-based routing
8//! - Separate OpenAPI spec generation per version
9//!
10//! # Example
11//!
12//! ```rust,ignore
13//! use rustapi_openapi::versioning::{ApiVersion, VersionStrategy, VersionRouter};
14//!
15//! let router = VersionRouter::new()
16//! .strategy(VersionStrategy::Path("/v{version}"))
17//! .default_version(ApiVersion::new(1, 0, 0))
18//! .version(ApiVersion::new(1, 0, 0), v1_routes)
19//! .version(ApiVersion::new(2, 0, 0), v2_routes);
20//! ```
21
22mod router;
23mod strategy;
24mod version;
25
26#[cfg(test)]
27mod tests;
28
29pub use router::{
30 DeprecationInfo, ResolvedVersion, VersionFallback, VersionRouter, VersionedRouteConfig,
31 VersionedSpecBuilder,
32};
33pub use strategy::{ExtractedVersion, VersionExtractor, VersionSource, VersionStrategy};
34pub use version::{
35 AnyVersionMatcher, ApiVersion, MajorVersionMatcher, VersionMatcher, VersionParseError,
36 VersionRange,
37};