Здравствуйте. Подскажите, пожалуйста, возможные подходы организации кода для версионности REST API.
Ситуация примерно следующая. Есть достаточно большой проект с legacy кодом. 60-70% логики находится в контроллерах. Все контроллеры были организованы в один модуль - v1.
Сейчас пришла необходимость сделать вторую версию API.
Пока вижу два варианта:
1) Перенести существующие контроллеры в common, в модулях v1 и v2 унаследоваться от них. Из минусов - нужно быть очень внимательным, чтобы поддерживать обратную совместимость в v1
2) Унаследовать контроллеры v2 от контроллеров v1. Из минусов - зависимость v2 от v1 (и в будущем v3 -> v2 -> v1) и практически отсутствие возможности отказаться от старых версий API в будущем. Из плюсов - реализовать достаточно быстро
Что можете порекоммендовать? Может можете предложить ещё варианты?
Версионирование API и организация кода
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Версионирование API и организация кода
Скопировать контроллеры из v1 в v2.
Нравится Yii? Давайте сделаем его лучше!.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Версионирование API и организация кода
В том, что стабильность v1 будет стопроцентная и исправляя v2 не будет шансов поломать v1.
Баги обычно не в самом API, а в сервисном слое, который этот API дёргает.
Баги обычно не в самом API, а в сервисном слое, который этот API дёргает.
Нравится Yii? Давайте сделаем его лучше!.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Версионирование API и организация кода
По времени что наследоваться что потихоньку вытаскивать сервисный слой будет примерно одно и то же...
Ну да. Если v1 API остаётся только для совместимости, то копировать — нормальное решение.
Ну да. Если v1 API остаётся только для совместимости, то копировать — нормальное решение.
Нравится Yii? Давайте сделаем его лучше!.
Re: Версионирование API и организация кода
Спасибо. Примерно так и поступлю. Но
С этим не могу согласиться. Например, унаследоваться от 20 контроллеров и 40 ресурсов это примерно 30-40 мин. А вот вытаскивать всю логику в сервисный слой и оттестировать не сломалось ли чего (да, тестов тоже нет) это займет гораздо большей времени. Хотя понимаю, что так дальше продолжаться не может и вытаскивать всеравно надо будет...
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Версионирование API и организация кода
А, ну если тестов нет, тогда да...
Нравится Yii? Давайте сделаем его лучше!.