Meqenëse shërbimet dëployohen në mënyrë të pavarur, asnjëherë nuk mund të supozosh se thirrësit përditësohen njëkohësisht. Versionizimi i API-ve plus përputhshmëria përpara i lejojnë prodhuesit të evoluojnë pa thyyer konsumatorët ekzistues.
Meqenëse shërbimet dëployohen në mënyrë të pavarur, asnjëherë nuk mund të supozosh se thirrësit përditësohen njëkohësisht. Versionizimi i API-ve plus përputhshmëria përpara i lejojnë prodhuesit të evoluojnë pa thyyer konsumatorët ekzistues.
| Strategjia | Shembulli |
|---|
| Rruga URI | GET /v2/orders/42 |
| Koka | Accept: application/vnd.api.v2+json |
| Evolucioni i skemës | shto fusha, asnjëherë mos fshi/riemërto |
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
}
Numrat e fushave, jo emrat, përcaktojnë formatin e telit, kështu që shtimi i fushave është përputhshmër prapa.
Release v2 ─▶ run v1 + v2 together ─▶ migrate consumers ─▶ deprecate v1 ─▶ remove v1
Asnjëherë mos hiq një version ndërsa trafikut real ende i përdor. Gjurmo përdorimin para pensionimit.
Dëployimi i pavarur funksionon vetëm nëse një prodhues mund të dërgojë një ndryshim pa koordinuar çdo lëshim të konsumatorit.
Dizajnimi për ndryshime shtesë dhe suporta për versione të vjetra gjatë migrimit është ajo që ruan atë pavarësi në vend që të detyrojë përditësime të brishtë të madhe.