Minħabba li s-servizzi jitqiegħdu b'mod indipendenti, ma tistax qatt tassumi li l-msejjħin jissoggezzjoniaw b'sintonija. API versioning plus backward compatibility jippermetti lill-produtturi li jevolvu mingħajr ma jkisruh l-konsumatur eżistenti.
Minħabba li s-servizzi jitqiegħdu b'mod indipendenti, ma tistax qatt tassumi li l-msejjħin jissoggezzjoniaw b'sintonija. API versioning plus backward compatibility jippermetti lill-produtturi li jevolvu mingħajr ma jkisruh l-konsumatur eżistenti.
| Stratiġija | Eżempju |
|---|
| URI path | GET /v2/orders/42 |
| Header | Accept: application/vnd.api.v2+json |
| Schema evolution | żid il-fields, qatt ma tneħħi/erġa tasmija |
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
}
In-numri tal-field, mhux l-ismijiet, jiddefinixxu l-format tal-wajer, għalhekk in-nħlul tal-fields huwa kompatibbli lil quddiem.
Release v2 ─▶ run v1 + v2 together ─▶ migrate consumers ─▶ deprecate v1 ─▶ remove v1
Mejjax tneħħa verżjoni filwaqt li t-traffiċ reali għadu jkunwarjaha. Segwi l-użu qabel ma tittrattira.
Id-deplojobbiltà indipendenti taħdem biss jekk produttur jista' jitfa' bidla mingħajr ma jikkoordina l-ħruġ ta' kull konsumaatur.
Dizajna għal bidla addittiva u appoġġ tal-verżjoniet qodma matul il-migrazzjoni hija dik li iffisser dik l-indipendenza, minflok ma tifża l-upgrade big-bang fragili.