Piszę interfejs API Rest i zastanawiam się, jak najlepiej obsługiwać różne wersje. Nie mam na myśli tego, jak zdefiniować identyfikator URI jako V2 lub V3, ale raczej jak ustrukturyzować kod, biorąc pod uwagę, że musiałby on:
- Obsługa wielu wersji jednocześnie, np. Identyfikatory URI wersji V1, V2 i V3 muszą być jednocześnie aktywne. Chciałbym wycofać V1, gdy powie V4, aby ograniczyć obsługiwaną kwotę w dowolnym momencie.
- Unikaj jak największego powielania kodu
- Ułatw sobie dodawanie nieprzerwanych zmian do wersji, bez wpływu na inne wersje
Wydaje się, że istnieje kilka podejść, które można zastosować:
Użyj Git do sterowania wersjami, z gałęzią dla różnych wersji (a stare wersje zasadniczo nie wykonują żadnych nowych prac programistycznych). Oznaczałoby to brak duplikacji kodu, ponieważ tylko najnowsza wersja jest w kodzie, ale poprzednie wersje musiałyby współpracować z nową wersją bazy danych, dopóki nie zostaną wycofane.
Zduplikowany kod, dzięki czemu każda wersja jest obsługiwana w tej samej aplikacji i ma całkowicie oddzielną ścieżkę kodu, ale oznaczałoby to dużo duplikacji
Ponownie użyj dużej ilości kodu we wszystkich wersjach, ale utrudniłoby to utrzymanie, ponieważ zmiana jednej wersji może mieć wpływ na poprzednią wersję
Czy istnieje jakaś najlepsza praktyka, aby poradzić sobie z tym problemem, ponieważ wszystkie opcje wydają się mieć własne problemy?