GH GambleHub

Compatibilitate și actualizări API

1) Fundamentele de compatibilitate

Aditiv-primul: adăugați noi fără a rupe vechi (noi câmpuri opționale/puncte finale, noi valori ale enumului).
Contracte stabile: „ceea ce se promite în caietul de sarcini lucrări;” comportament documentat.
Înapoi> Înainte: prioritate de compatibilitate înapoi; înainte este permis prin intermediul cititorilor toleranți.
Documentele sunt primare: singura sursă de adevăr este versiunea de registru a schemei (OpenAPI/AsyncAPI/Proto).
Evoluție explicită: rupere - doar printr-o nouă versiune majoră și un ghid de migrare.

2) Taxonomia modificărilor

2. 1 Compatibil (MINOR/PLASTURE)

Adăugați câmpuri/antete opționale, puncte finale noi, parametri de interogare cu valori implicite.
Creșterea limitelor ('page _ size', TTL), clarificarea erorilor fără modificarea codurilor/semanticii.
Adăugați valori enum dacă clienții ignoră „necunoscut” (tolerant-reader).

2. 2 Ambiguă (comportamentală)

Schimbarea defaults, ordinea de sortare, timeout-uri subțiri, cote - poate „rupe” logica de afaceri. Necesită anunțul RFC + și canari.

2. 3 Rupere (MAJOR)

Redenumiți/ștergeți câmpurile, schimbați tipul/formatul, înlocuiți codurile de eroare, inversați incompatibilitatea contractelor/schemelor de autentificare.

3) Politica de versioning

Strategie: „versioning path” („/v1 ”, „/v2”).
Minor/patch: „adăugați, nu rupeți”.
Antete datate (opțional): „X-API-Version-Date” pentru modificări incrementale moi.
Tipuri media (Op.): 'Acceptă: cerere/vnd. acme. v1 + json "pentru granulare fină.

4) Deprecieri și apus de soare

4. 1 Anteturi de comunicare


Deprecation: true
Sunset: 2026-03-31T00:00:00Z
Link: </guides/reports-v2>; rel="successor-version"

4. 2 Comanda de retragere

1. Anunț în portalul/lista de corespondență/note de lansare SDK.
2. Fereastra de avertizare ≥ de 90-180 de zile.
3. Statusuri în tabloul de bord al adopţiei.
4. După apus - 410 Gone sau „read-only” mod pentru perioada de grație, dacă a fost de acord.

5) Migrații și coexistența versiunilor

Dual-write/dual-read în tranziție și reconciliere cu rapoartele.
Adaptoare (temporare): conversii gateway ale sarcinii utile vechi → noi scheme; durata de viață a adaptorului este limitată.
Ajutor SDK: versiuni care acceptă ambele versiuni, cu avertismente de decrementare (1 timp pe proces).
Steaguri caracteristice: includerea de noi semantici în conformitate cu lista de chei/chiriași.

6) Compatibilitate înapoi și înainte

6. 1 Înapoi (clienți vechi ↔ server nou)

Nu modificați formatele de tip/obligatoriu.
Câmpurile noi sunt doar opționale.
Erori - old' error _ code ', adăugați coduri noi, nu înlocuiți.

6. 2 Forward (clienți noi ↔ server vechi)

Verificați capacitățile prin „OPȚIUNI ”/„/versiuni”.
Comportament de grație: Clientul trebuie să fie tolerant la caracteristicile lipsă.

7) Contracte și controale automate

Registry: stochează versiunile schemei; PR sapă → rapoarte de rupere/non-rupere.
Linter: nume/tipuri, idempotență, paginare, coduri stabile.
CDC (Contracte bazate pe consumatori): teste integrator în CI furnizorului (Pact și analogi).
Poarta: PR-ul este blocat atunci când se sparge fără un 'major bump '/RFC.

Exemplu de pas CI:
yaml
- name: API Diff run: api-diff --from main --to $PR_SHA --fail-on=breaking --format junit --out diff. xml

8) Extensie canară și inversă

Canare: 10% → 25% → 50% → 100% din trafic; auto-rollback pe SLO degradare (5xx/latență/429).
Tastele beta: acces la versiuni noi prin lista de permisiuni.
Eliberați înghețarea: bugetul de eroare în timpul arderii.
Analiza acceptării: cota de trafic/clienți pe noua versiune, timpul de migrare.

9) Compatibilitate în detaliu: erori, paginație, idempotență

9. 1 Erori

Nu modificați stările HTTP în scripturile existente.
„error _ code” - stabil; coduri noi numai adăuga.
'aplicare/problemă + json' este un singur format.

9. 2 Paginare

Comută la cursor/keyset = MINOR dacă vechiul 'offset/limit' este acceptat.
Documentaţi sortarea „(updated_at,id)” şi stabilitatea cursorului.

9. 3 Idempotenţa

Pentru scriere - 'Idempotency-Key' + '409 IDEMP_REPLAY' în caz de conflict.
Migrațiile nu ar trebui să schimbe semantica idempotenței.

10) Gateway transformări (atunci când este cazul)

Hărți v1→v2 câmpuri, normalizați erorile, convertiți formatele de date/bani.
Guardrails: transformările sunt transparente și logabile; nu ascundeți ruperea, ci utilizați ca o punte limitată în timp.

11) Comunicații și Portal

Changelog с датами ('adăugat/schimbat/depreciat/eliminat/fix').
Versiune card: stare (beta/GA/depreciate), data apus de soare, link-uri către ghiduri.
Carnete de notificare: 'amortizare. notificare „,” versiune. eliberat „,” plan. schimbare ".
Note de lansare SDK + banner portal.

12) Măsurători de succes

Rata de adoptare v2 (per cerere/client).
Incidente înapoiate.
Eroare mix (4xx/5xx/429 shares) înainte/după eliberare.
Timp de adoptare mediană.
Încărcare suport (tichete/săptămână).
Cost-to-Serve.

13) Șabloane și exemple

13. 1 Titluri și decretări ale versiunii


X-API-Version: v1
Deprecation: true
Sunset: 2026-03-31T00:00:00Z
Link: </v2/reports>; rel="successor-version"

13. 2 Politica versiunii (fragment YAML)

yaml versioning:
strategy: "path"
compatibility:
minor: "additive-only"
patch: "bugfix/perf, no schema change"
deprecation:
min_notice_days: 120 rollout:
canary_steps: [10,25,50,100]
rollback_checks: ["5xx_rate","p95_latency","429_rate","adoption"]

13. 3 Câmp OpenAPI Adăugați compatibil

yaml components:
schemas:
Report:
type: object required: [id, createdAt]
properties:
id: { type: string }
createdAt: { type: string, format: date-time }
cursor: { type: string, description: "optional for v1. 2+" } # additive

14) Lista de verificare de lansare (MINOR/MAJOR)

MINOR

  • DIFF: non-rupere, verde linter
  • Documentație/SDK actualizat (exemple/codec-uri)
  • Canare + auto-SLO rollback
  • Planul de comunicații, Pagina portalului
  • Tablouri de bord de adopție și eroare

MAJOR

  • RFC/ADR, data apusului și fereastra ≥90 -180 zile
  • v1↔v2 pod și ghid de migrare
  • Dual-write/read și reconcilieri
  • SDK cu ambele API-uri + alerte
  • Pilot cu integratori cheie

15) Planul de implementare (3 iterații)

1. Fundația (2 săptămâni):

Registrul schemelor, scame și auto-diff în CI; politica de compatibilitate; Titluri de „depreciere/apus de soare”.

2. Versiuni gestionate (3-4 săptămâni):

Canare, steaguri caracteristice, alerte SLO; portalul versiunii; SDK lansează cu suport pentru 2 ramuri.

3. Automatizare și scară (continuă):

Testele CDC ale consumatorilor în CI, prognoza de apus de soare privind tendințele de adopție, notificări automate și memento-uri.

16) Mini-Întrebări frecvente

Pot schimba tipul de câmp fără un major?
Nu, nu este. Chiar şi „stroka→chislo” se strică. Introduceți un câmp nou, cel vechi este depreciat.

Enum: poți adăuga valori?
Da, dacă clienții sunt toleranți-cititori. În caz contrar - mai întâi o alertă și beta.

Cât de mult să dețină versiunea veche?
Până în prezent, adoptarea noului ≥95% a fost menținută. Fixați termenul limită în politică.

Total

Compatibilitatea API este o disciplină: abordare aditivă, scheme formale și dife-uri, eliberări canare, decretări clare și migrații gestionate. Consolidați politicile de schimbare, automatizați verificările și comunicațiile, măsurați adoptarea - iar actualizările dvs. vor înceta să rupă clienții, iar viteza de evoluție va crește fără a pierde fiabilitatea.

Contact

Contactați-ne

Scrieți-ne pentru orice întrebare sau solicitare de suport.Suntem mereu gata să ajutăm!

Telegram
@Gamble_GC
Pornește integrarea

Email-ul este obligatoriu. Telegram sau WhatsApp sunt opționale.

Numele dumneavoastră opțional
Email opțional
Subiect opțional
Mesaj opțional
Telegram opțional
@
Dacă indicați Telegram — vă vom răspunde și acolo, pe lângă Email.
WhatsApp opțional
Format: cod de țară și număr (de exemplu, +40XXXXXXXXX).

Apăsând butonul, sunteți de acord cu prelucrarea datelor dumneavoastră.