Я пишу API відпочинку і цікавлюсь, як найкраще впоратися з підтримкою різних версій. Під цим я маю на увазі не те, як визначити URI як V2 чи V3, а як структурувати код, враховуючи, що йому потрібно:
- Підтримка декількох версій одночасно, наприклад. URI та V2 та V3 URI мають бути одночасно відтвореними. Я б пішов у відставку з V1, коли скажу, що V4 приходить для того, щоб в будь-який час обмежити суму, яку підтримують.
- Уникайте якомога більше дублювання коду
- Додайте неспроможні зміни до версії, не впливаючи на інші версії
Здавалося б, існує кілька підходів, до яких можна скористатися:
Використовуйте Git для управління версіями, з гілкою для різних версій (і старі версії, по суті, не виконують нових робіт з розробки). Це означатиме, що не дублювання коду, оскільки в коді є лише остання версія, але попередні версії повинні працювати з новою версією БД, поки вони не будуть звільнені.
Дублікат коду, так що кожна версія обробляється в одній програмі та має абсолютно окремий шлях коду, але це означатиме багато дублювання
Повторне використання великого коду в усіх версіях, але це ускладнить підтримку, оскільки зміна однієї версії скоріше вплине на попередню версію
Чи є найкраща практика для вирішення цієї проблеми, оскільки, здається, всі варіанти мають свої проблеми?