Versioning lets you evolve an API with breaking changes without breaking existing clients. There are three mainstream strategies, plus a deprecation process.
The three strategies
1. URI versioning — the version is in the path.
GET /v1/users/42 HTTP/1.1
GET /v2/users/42 HTTP/1.1
Simplest and most visible; easy to route, cache, and test in a browser. Downside: it technically violates "the URI identifies a resource" (the same user now has two URLs). This is by far the most common choice (GitHub, Stripe historically).
