На данном этапе думаем, каким образом можно было бы реализовать разные версии API.
Все мы прекрасно понимаем для чего нужны версии и к чему приведёт если не внедрить эту возможность в проект.
Вопрос заключается в поиске лучшей практики.
Предполагаем несколько вариантов.
1. Номер версии передавать в качестве параметра при выполнении запроса, так как это делает vk.com https://domain.com/users.get?v=0.1
Внутри реализовать некий механизм, предполагаем что это будет некий треш с новыми функциями.
2. Так как проект будет полностью "докеризирован" то можно было бы форкать проект и изменять конфигурацию.
При этом, не придётся плодить роуты, методы, ...
И мне кажется это параллелит с VCS. Если речь идёт о кардинальном изменении логики приложения.
Какие есть ещё способы?
Symfony 5
FOSRestBundle не предлагать, в Symfony 5 не работает.
И не мудохаться с квери-параметром
Такие возможности у вас под рукой, какой параметр вы там надумали как в нулевых?!
Ну это конечно, если вы в контроллерах говна не нагородили, если сделано чисто -- то контроллер как расходка,
контроллер + парочка ДТО под нужную версию
а что если проект кардинально изменит ряд своих модулей.
Зависит от политики обратной совместимости.
Совместимый код придется писать определенным образом, добавляя новую фичу, нужно соблюсти совместимость со старой (или не совмещать)
Есть некий функционал товаров с одной картинкой. у товара
Теперь в 2й версии вы добавили новый функционал "все картинки" товара
Когда вы добавили этот вариант, то стало ясно, что картинка из таблицы товара мертвым грузом, тк они же есть в таблице картинок, где их несколько...
Тогда вы переписываете код таким образом, чтобы данные из провайдера шли из новой таблицы, но в ДТО к 1 версии возвращалась первая картинка...
Если у вас начинает пересекаться/конфликтовать функционал -- тут разные эвристки и классы помогут вам, все не так сложно и довольно комфортно
Хочу отметить, что "в версии 2" -- это в том же приложении, где есть и v1
В версии v2 значит эта таблица не будет использоваться, а если замена юзерам в accounts, то для v1 нужно сделать транфсормацию, чтобы туда в ДТО прилетали данные из accounts
Игорь, да, вполне...
данные для контроллеров будут прилетать через ДТО-шки и трансформеры, а логику их создания и источник данных уже программируйте так, как нужно
Максим Федоров, как вы считаете, что если эту самую версионность обеспечить системой GIT, для того чтобы можно было собирать нужные контейнеры в докере.