GH GambleHub

Teknoloji ve Altyapı - API Versioning

API sürümleri

1) Neden ihtiyacınız var

Sürüm oluşturma, hizmetler ve müşteriler arasındaki sözleşmeleri arıza olmadan değiştirmenin yönetilebilir bir yoludur. Çok sayıda entegrasyona sahip ürünlerde (ödemeler, KYC/AML, oyunlar, faturalandırma, raporlama),'eski've'yeni "müşteriler aynı anda yaşar. Doğru sürüm politikası:
  • Serbest bırakma sırasında olay riskini azaltır,
  • İyileştirmeleri ve güvenliği planlamanızı sağlar,
  • İş ortağı geçişleri için işletmelere öngörülebilir zaman çizelgeleri sağlar.

2) Değişikliklerin sınıflandırılması

PATCH (kırılmıyor): sözleşmeyi değiştirmeden düzeltmeler (isteğe bağlı alanlar ekleme, doğrulama düzeltmeleri).
MINOR: geri uyumlu uzantılar (yeni uç noktalar, öntanımlı alanlar).
MAJOR (breaking): Yapı, semantik değiştirme veya alanları/uç noktaları silme.

SemVer 'MAJOR önerilir. MINÖR. Yapaylar için PATCH '(SDK/şemalar), "harici" API numarası basitleştirilebilir (v1, v2).

3) REST sürüm modelleri

1. URI'YE:

'GET/v1/payments/{ id}'

Artıları: şeffaf, cable, rota kolay. Eksileri: belgelerin çoğaltılması, ince bir şekilde gelişmesi daha zor.

2. Başlıklarda (içerik anlaşması):

'Accept: application/vnd. Şirket. ödemeler. V2 + json '

Artıları: esneklik, URL'de "çöp" yok, medya türünün uygun evrimi. Eksileri: Tarayıcıda hata ayıklamak daha zordur, disiplinli bir müşteriye ihtiyacınız vardır.

3. Özel başlıkta:

'X-API-Sürüm: 2' (или 'Api-Sürüm: 2025-09-01')

Artılar: Sadece sluice. Eksileri: standart yok, önbelleğe dikkat edin.

4. Tarih tabanlı sürüm:

Fintech/raporlama için iyi: değişimin öngörülebilir "kesintileri" (örn. Üç ayda bir).

5. Kaynak/Model Sürüm Oluşturma:

Aynı uç nokta farklı görünümler döndürebilir: 'fields =...' veya 'profile = litedolu '. Bu bir eklemedir, sürüm değiştirmenin yerine geçmez.

Öneri: dış entegrasyonlar için - 'URI vN' + Reddetme/Günbatımı başlıkları; Dahili için - ağ geçidi ve platform destekliyorsa, 'Kabul' veya sürüm başlığını kabul edebilirsiniz.

4) GraphQL

Tercih - global versiyon yok. Alanların/türlerin eklenmesi ve depriction ('@ kullanımdan kaldırıldı (sebep:... "")').
Değişikliklerin kırılması - yalnızca geçiş kılavuzuna sahip "büyük" pencerelerde (sürüm şeması ad alanı).
"N + 1'i izleyin ve mevcut alanların anlamını değiştirmeyin.

5) gRPC/Protobuf

Alan numaraları değişmez. Silinen alanları 'ayrılmış'olarak işaretleyin.
Alanları güvenli varsayılan değer ile isteğe bağlı olarak ekleyin.
Otomatik uyumluluk kontrolü için buf kırma/tiftik kullanın.
Sürüm paketleri/modülleri: 'paket ödemeleri. v1; '-' ödemeleri. v2 '.

6) Etkinlik API'leri (EDA)

Olay şeması aynı sözleşmedir. Şema Kayıt Defteri'nde saklayın (Avro/JSON-Schema/Protobuf).
Konular ve versiyonlar: 'ödemeler. v1. Yetkili ',' ödemeler. V2. yetkilendirildi '.
Değişiklikleri kırmak - yeni bir olay türü veya yeni bir konu.
Evrim garanti eder: LTS döneminde tüketiciler için geriye dönük uyumlu.

7) Depriction Politikası ve EOL

Şeffaf kurallar uygulayın:
  • Kullanım dışı bırakma: Değişiklik günlüğü ve özelliklerdeki etiketler (OpenAPI/GraphQL SDL), üstbilgi
  • 'Depresyon: doğru've mümkün olduğunda' Sunset: Tue, 31 Mar 2026 00:00:00 GMT '.
  • İletişim: e-posta/iş ortağı portalı, webhooks bildirimleri, sürüm notları.
  • Şartlar: MINOR - 3-6 aylık destek, MAJOR - 9-18 ay (kritikliğe bağlı olarak).
  • Zaman pencereleri: "API Sürüm Oluşturma İlkesi'nde düzeltin.

8) Yönlendirme ve Sürümler

Ağ Geçidi API'si (Kong/Apigee/Nginx/Envoy):'/v1/' önekine göre kurallar, başlık veya mediatype ile.

Örnek rota:

if ($http_accept ~ "vnd.company.payments.v2") { proxy_pass http://payments-v2; }

Kanarya/Mavi-Yeşil/Gölge: Yeni sürümü trafiğin %1-5'inde yuvarlayın, metrikleri ve sözleşme hatalarının günlüklerini karşılaştırın.
Özellik Bayrakları: Sözleşmeyi değiştirmeden davranışı gizleme.
Sıfır kesinti süresi geçişi: MAJOR ile veri şemasının çift yazılmasını/okunmasını sağlayın.

9) Sözleşme testi ve uyumluluk kontrolü

OpenAPI Diff (veya swagger-diff) - MINOR/PATCH'in şemaları kırmadığını kontrol edin.
Spektral çizgi oluşturma - stil, gerekli meta veriler (sürüm, Kullanımdan kaldırma).
Tüketici Odaklı Sözleşmeler (Pakt) - sağlayıcının müşterileri kırmamasını sağlar.
Buf kırma для protobuf.
CI MAJOR yükseltmeden değişiklikleri kırma düşmelidir.

10) Dokümantasyon ve SDK

Spesifikasyonların sürümü:'/docs/api/v1/openapi. json ','/docs/api/v2/...'.
SemVer ve changelog ile sürüm (npm/maven/pypi) tarafından SDK oluşturun.
SDK'da kullanımdan kaldırılmış yöntemleri/Kullanımdan kaldırılmış ek açıklamalarla işaretleyin.

11) Versiyona göre gözlem

Metrikleri ayrı ayrı toplayın:
  • RPS/latency/errors per version ('api _ version' etiketi).
  • Uç nokta kullanım haritaları: V1'de başka kimler var?
  • Uyarılar: "> 10 %4xx sözleşme uyumsuzluğu nedeniyle",'eski müşteriler> T-tarihinden sonra % X ".

12) Önbelleğe alma ve sürümler

Transit versiyonu CDN cachability geliştirir.

Başlık/medya sürümleriyle - dikkatlice Vary ile:
  • 'Vary: Accept, X-API-Version'.
  • Önbellek anahtarlarını kırmak için MINOR'daki yanıtın semantiğini değiştirmeyin.

13) Güvenlik

Sürümü JWT'ye şifrelemeyin veya dikmeyin - sürüm, belirteç değil, istek tarafından belirlenir.
İç montaj numaralarını göstermeyin. Harici mesajlar için "v1/v2" kullanın.
MAJOR'da inceleme doğrulama, limitler, PII maskeleme.

14) Geçişler ve otomatik yardımcılar

"Geçiş Kılavuzu v1 - v2'yi yayınlayın: alan eşleme tablosu, örnek istekleri/yanıtları, kenar durumları.
Eski alanları vurgulayan müşteriler (CLI) için astarlar sunuyoruz.
Büyük ortaklar için - iki sürümü ve bir test veri kümesi ile sandbox.

15) Anti-desenler

"Ebedi v1": son teslim tarihlerinin ve kullanım metriklerinin eksikliği.
MINOR/PATCH'de gizli kırılma değişiklikleri.
"Sorgu dizesinde sürüm" ('? v = 2 ') - önbelleği ve okunabilirliği keser.
"Bir uç nokta yüz bayrak değeridir": test edilmesi/belgelenmesi zor.

16) Uygulama kontrol listesi

1. Dış ve iç istemciler için seçilen model (URI/Accept/Header).
2. Özellikler ve SDK için SemVer, CI'da otomatik kırma kontrolü.
3. Kullanımdan kaldırma/Günbatımı politikası ve iletişim şablonları.
4. Ağ geçidi yönlendirme + kanaryalar, versiyona göre panolar.
5. Kritik entegrasyonlar için CDC/Sözleşme testleri (ödemeler, KYC, raporlama).
6. Dokümantasyon/SDK/geçiş kılavuzu, sürüm ile aynı anda yayınlanır.
7. Tarihler ve sorumlu EOL planı.

17) Örnekler

17. 1 REST (URI + başlıkları)

İstek:

GET /v2/withdrawals/12345
Accept: application/json
Idempotency-Key: 4a1c-…-9f
Cevap:
json
{
"id": "12345",
"status": "PENDING_REVIEW",
"amount": {"value": "100.00", "currency": "EUR"},
"limits": {"daily": "500.00"},
"created_at": "2025-10-02T10:00:00Z",
"links": [{"rel": "cancel", "href": "/v2/withdrawals/12345/cancel", "method": "POST"}]
}
Depriksiyon başlıkları (v1'de):

Deprecation: true
Sunset: Tue, 31 Mar 2026 00:00:00 GMT
Link: </v2/docs>; rel="successor-version"

17. 2 İçerik pazarlığı


GET /payments/987
Accept: application/vnd.company.payments.v2+json
Vary: Accept

17. 3 GraphQL (Alan Depriksiyonu)

graphql type Payment {
id: ID!
amount: Money!
status: PaymentStatus!
method: PaymentMethod!
legacyCode: String @deprecated(reason: "Use field `method`")
}

17. 4 gRPC (protobuf)

proto package payments.v2;

message Withdrawal {
string id = 1;
Money amount = 2;
string status = 3; // previously enum, now string with documented values reserved 4; // legacy field removed in v1 -> v2
}

17. 5 Olay modeli

Konular:
  • 'wallet. v1. denge. güncellenmiş '
  • 'wallet. V2. denge. changed '(genişletilmiş şemaya sahip yeni olay)

Şemalar Kayıt Defterinde saklanır, üretici uyumluluğu ihlal eden bir şemayla olayları yayınlamaz.

18) Bağlam iGaming/fintech (uygulama)

Ödemeler: 'Durum'/' düşüş _ nedeni'nin genişletildiği yeni PSP'ler için girdi v2; Ağ geçidinde, raporlama için v1 - v2 eşleniyor.
KYC: MINOR, 'pep _ screening' alanını ekler, müşteriler v1'i görmezden gelir, v2 - gerektirir.
Sorumlu oyunlar/limitler: MAJOR limitler modelini değiştirir (günlük/haftalık). EOL v1'den önce raporlamaya çift ihracat.
Düzenleyicilere raporlama: sabit sürümler-tarihler: 'raporlama-2025-01'.

19) Mini politika (wiki için örnek)

Model: harici API'ler için - 'URI/vN/'; Dahili için - 'Kabul:... vN + json 'veya' X-API-Sürüm: N '.
SemVer: Özellikler ve SDK'lar 'N'olarak yayınlanır. Minör. Yama '. MAJOR RFC/ADR gerektirir.
Uyumluluk: MINOR/PATCH - kırılma değişikliği yok. Sadece MAJOR ile kırma.
Amortisman/EOL: ≥90 günlük duyuru; Başlıklarda gün batımı-tarih; Kritik müşteriler için LTS şubesi.
Kontrol: Anahtar entegrasyonları için CI, CDC'de OpenAPI diff/buf kırma.
Gözlemlenebilirlik: 'api _ version' etiketli metrikler/günlükler.
Sürümler: kanarya %5 ≥ 24 saat, daha sonra yeşil metriklerle %100'e kadar aşamalar halinde.


Sonuç

Sürüm oluşturma "URL'de/v2'ile değil, süreçle ilgilidir: açık evrim kuralları, otomatik uyumluluk kontrolleri, yönetilen sürümler ve entegrasyonlara saygı. Net bir politika girin, izleme ve gözlemlenebilirliği otomatikleştirin - ve değişiklikler artık ürün için bir tehdit olmayacaktır.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.