Mivel a szolgáltatások függetlenül települnek, sosem feltételezheted, hogy a hívók szinkronban frissülnek. API-verzionálás plusz visszamenőleges kompatibilitás lehetővé teszi a termelőknek, hogy fejlődjenek a meglévő fogyasztók megbontása nélkül.
Mivel a szolgáltatások függetlenül települnek, sosem feltételezheted, hogy a hívók szinkronban frissülnek. API-verzionálás plusz visszamenőleges kompatibilitás lehetővé teszi a termelőknek, hogy fejlődjenek a meglévő fogyasztók megbontása nélkül.
| Stratégia | Példa |
|---|
| URI elérési út | GET /v2/orders/42 |
| Fejléc | Accept: application/vnd.api.v2+json |
| Séma evolúció | mezők hozzáadása, soha nem eltávolítás/átnevezés |
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
}
A mezzők száma, nem a nevek, definiálják a vezeték formátumát, így a mezők hozzáadása visszamenőlegesen kompatibilis.
Release v2 ─▶ run v1 + v2 together ─▶ migrate consumers ─▶ deprecate v1 ─▶ remove v1
Soha ne távolítsd el a verziót, amíg valódi forgalom még használja. Nyomon követsd a használatot a nyugdíjazás előtt.
A független telepíthetőség csak akkor működik, ha a termelő képes egy módosítást szállítani minden fogyasztó kiadásának koordinációja nélkül.
Az additív változások megtervezése és a régi verziók támogatása az átköltözés során az, ami megőrzi ezt a függetlenséget, ahelyett hogy törékenyek lennének a big-bang frissítések kényszerítésére.