I thought this was something obvious that everyone did? I was definitely doing this 15+ yrs ago when I built web services. It's the only path of sanity when you have to support multiple versions at the same time.
Neither the article, nor the linked articles, address how to handle actual breaking changes.
E.g. when you _require_ new fields that are not present in the old API, you can't just hard-code a default value for the old API and use it forever. You must migrate clients to a new API and deprecate the old. Rolling versions doesn't magically solve that.
I admit, most required fields can be defaulted and clients accept the resulting degraded experience/features. This approach does make you really think about what's actually a breaking change or not, and if it's worth the cost.
Neither the article, nor the linked articles, address how to handle actual breaking changes.
E.g. when you _require_ new fields that are not present in the old API, you can't just hard-code a default value for the old API and use it forever. You must migrate clients to a new API and deprecate the old. Rolling versions doesn't magically solve that.
I admit, most required fields can be defaulted and clients accept the resulting degraded experience/features. This approach does make you really think about what's actually a breaking change or not, and if it's worth the cost.