Tôi đang viết API nghỉ ngơi và đang tự hỏi làm thế nào tốt nhất để xử lý hỗ trợ các phiên bản khác nhau. Bằng cách này, tôi không có nghĩa là làm thế nào để xác định URI là V2 hoặc V3, mà là cách cấu trúc mã được cung cấp mà nó cần:
- Hỗ trợ nhiều phiên bản cùng một lúc, ví dụ. Các URI V1 & V2 & V3 phải được phát cùng lúc. Tôi sẽ nghỉ hưu V1 khi nói V4 xuất hiện để hạn chế số tiền được hỗ trợ bất cứ lúc nào.
- Tránh sao chép mã càng nhiều càng tốt
- Giúp dễ dàng thêm các thay đổi không phá vỡ vào một phiên bản mà không ảnh hưởng đến các phiên bản khác
Dường như có một vài cách tiếp cận có thể được thực hiện:
Sử dụng Git để kiểm soát các phiên bản, với một nhánh cho các phiên bản khác nhau (và các phiên bản cũ về cơ bản không có công việc phát triển mới nào được thực hiện trên đó). Điều này có nghĩa là không có sự sao chép mã vì chỉ có phiên bản mới nhất trong mã, nhưng các phiên bản trước sẽ cần phải hoạt động với phiên bản mới của DB cho đến khi chúng bị loại bỏ.
Mã trùng lặp để mỗi phiên bản được xử lý trong cùng một ứng dụng và có đường dẫn mã hoàn toàn riêng biệt, nhưng điều này có nghĩa là rất nhiều sự trùng lặp
Sử dụng lại rất nhiều mã trên các phiên bản, nhưng điều này sẽ khiến việc duy trì khó khăn hơn vì việc thay đổi một phiên bản có nhiều khả năng ảnh hưởng đến phiên bản trước
Có cách thực hành tốt nhất nào để giải quyết vấn đề này không vì tất cả các lựa chọn dường như đều có vấn đề của riêng họ?