APIs evolve. Versioning prevents breaking clients:
URL path versioning:
/api/v1/users
/api/v2/users
Most common. Clear and explicit.
Header versioning:
Accept: application/vnd.api+json;version=2
Cleaner URLs but less discoverable.
Query parameter:
/api/users?version=2
Easy to test but pollutes parameters.
Best practices:
- Support old versions for deprecation period
- Document breaking changes clearly
- Use semantic versioning principles