Hizmetler bağımsız olarak dağıtıldığından, arayanların eş zamanlı olarak yükseltileceğini asla varsayamazsınız. API versiyonlaması artı geriye dönük uyumluluğu üreticilerin mevcut tüketicileri bozmadan gelişmesini sağlar.
Hizmetler bağımsız olarak dağıtıldığından, arayanların eş zamanlı olarak yükseltileceğini asla varsayamazsınız. API versiyonlaması artı geriye dönük uyumluluğu üreticilerin mevcut tüketicileri bozmadan gelişmesini sağlar.
| Strateji | Örnek |
|---|
| URI yolu | GET /v2/orders/42 |
| Başlık | Accept: application/vnd.api.v2+json |
| Şema evrimi | alanlar ekle, asla silme/yeniden adlandırma yapma |
NON-BREAKING (safe):
✓ add a new optional field
✓ add a new endpoint
✓ add a new enum value (if clients tolerate unknowns)
BREAKING (needs a new version):
✗ remove or rename a field
✗ change a type or make a field required
✗ change semantics of an existing field
message Order {
string id = 1;
double total = 2;
string currency = 3; // NEW field 3 — old clients ignore it safely
}
Alan adları değil alan numaraları wire formatını tanımlar, bu nedenle alan ekleme geriye dönük uyumludur.
Release v2 ─▶ run v1 + v2 together ─▶ migrate consumers ─▶ deprecate v1 ─▶ remove v1
Gerçek trafiğin hala kullandığı bir sürümü asla kaldırmayın. Kullanımdan kaldırmadan önce kullanımı izleyin.
Bağımsız dağıtım yalnızca üretici, her tüketicinin sürümünü koordine etmeden bir değişikliği gönderebilirse çalışır.
Ek değişiklik için tasarım yapmak ve geçiş sırasında eski sürümleri desteklemek, kırılgan bir big-bang yükseltmesi yerine o bağımsızlığı koruyan şeydir.