Не первый день думаю над концепцией версионирования API, с обратной совместимостью.
Эту задачу можно решит по по-разному, от банального создания роута v2 до более сложной логики в контексте одного приложения.
Я не хочу создавать дополнительные контроллеры.
Условные ControllerV1, ControllerV2
Есть идея, отдать на откуп в систему GIT.
Условная ветка V1, а если требуется V2 то делаем ответвление и запускаем новое приложение.
Дело в том, что проект целиком, от слова совсем докеризирован и проблем с быстрым развёртыванием в принципе нет.
Как итог, не нужно создавать дополнительные роуты.
Версии API изолированы друг от друга.
Развертывание одним пальцем руки.
Так, тут насколько хороших практик есть:
- версионирование по url - деплой разных инстансов api по разным http префиксам
- старые версии API только для поддержи, без развития. Можно выделить в отдельную ветку в git
- контейнеры должны иметь тоже версионирование