Common wisdom is semantic versioning - /api/v1, /api/v2 - Incentivises big-bang changes. - Splits user base between versions. - We believe infrastructure should be boring. - Enter Rolling Versions.
Quick Prototyping. - Backwards Compatible with Handlers. - Works with early versions of Go. http.ResponseController - Designed for regular production code. - Might not be Backwards Compatible with your Handlers. - Works with only Go 1.20+
more complex than response transformations. See Changes with side effects in the Stripe article. - Handling arbitrary data migrations, e.g. Webhook payloads.
github.com/tomschlick/request-migrations - Backwards–compatibility in Cloudflare Workers - blog.cloudflare.com/backwards-compatibility-in-cloudflare-workers - Infrastructure should be boring - dragonflydb.io/blog/infrastructure-should-be-boring - APIs as Infrastructure: future-proofing Stripe with versioning - stripe.com/blog/api-versioning