Change is inevitable. In the world of API design, versioning is the tool that allows you to evolve your system without breaking your clients' integrations.
1. URI Versioning
The most common approach. The version number is included directly in the URL (e.g., /v1/users). It's highly visible and easy to debug, but can lead to "URL pollution" over time.
2. Header Versioning
The version is passed in a custom HTTP header. This keeps your URIs clean and allows you to version resources independently, but it makes the API less discoverable via a browser.
3. Media Type Versioning
Versioning via content negotiation. This is often considered the most "RESTful" approach as it versions the representation of the data, not the resource itself.
Conclusion
There is no one-size-fits-all answer. Choose the method that best fits your team's constraints and your clients' expectations.