URI versioning places the version number in the URL path, which makes it explicit and easy for caching systems and routers to handle different versions separately.
Header versioning keeps the URL unchanged and uses HTTP headers to specify the version, which separates versioning from resource paths and keeps URLs clean.
Sharing core logic and using adapters for version differences reduces duplication and resource use while supporting multiple versions.
Semantic versioning gives detailed version info but requires clients to understand and negotiate versions carefully, adding complexity.
12 versions × 100 endpoints = 1200 endpoints total. 1200 × 500KB = 600,000 KB = 600 MB.
