IgorPI
@IgorPI

Версионность API в Symfony?

Коллеги, добрый день!

Разрабатываем небольшой проект.
Пишем API.

На данном этапе думаем, каким образом можно было бы реализовать разные версии API.
Все мы прекрасно понимаем для чего нужны версии и к чему приведёт если не внедрить эту возможность в проект.
Вопрос заключается в поиске лучшей практики.

Предполагаем несколько вариантов.

1. Номер версии передавать в качестве параметра при выполнении запроса, так как это делает vk.com
https://domain.com/users.get?v=0.1
Внутри реализовать некий механизм, предполагаем что это будет некий треш с новыми функциями.

2. Так как проект будет полностью "докеризирован" то можно было бы форкать проект и изменять конфигурацию.
При этом, не придётся плодить роуты, методы, ...
И мне кажется это параллелит с VCS. Если речь идёт о кардинальном изменении логики приложения.

Какие есть ещё способы?

Symfony 5

FOSRestBundle не предлагать, в Symfony 5 не работает.
  • Вопрос задан
  • 470 просмотров
Решения вопроса 1
Maksclub
@Maksclub
maksfedorov.ru
Предлагаю работать как все норм ребята
  • Создать папку контроллеров /V2/ (ну или/и добавить V2 в название контроллера для удобного поиска в IDE)
  • Настроить префикс для всех этих контроллеров как /v2 одной строкой в роутах (ну или если в аннотациях задаете -- в них указать префикс)

Дока: Route Groups and Prefixes¶

И не мудохаться с квери-параметром
Такие возможности у вас под рукой, какой параметр вы там надумали как в нулевых?!

Ну это конечно, если вы в контроллерах говна не нагородили, если сделано чисто -- то контроллер как расходка,
контроллер + парочка ДТО под нужную версию

UPD от tommy-vercetti:
Не стоит юзать JMS сериалайзер или Symfony Serializer с аннотациями для сущностей. Для респонсов можно использовать обычные DTO-шки либо fractal.

API доку удобно писать с помощью https://github.com/bukalapak/snowboard
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
grabbee
@grabbee
Версионирование кем-то считается устаревшей практикой.
Рекомендуют использовать "устаревание"(deprecated)
https://api-platform.com/docs/core/deprecations/#d...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы