Kadangi paslaugos diegiamos nepriklausomai, nuo jų negalima tikėtis, kad skambintojai atnaujins sinchronizuotai. API versioning ir backward compatibility leidžia gamintojams evoliucionuoti nesulaužant esamų vartotojų.
Kadangi paslaugos diegiamos nepriklausomai, nuo jų negalima tikėtis, kad skambintojai atnaujins sinchronizuotai. API versioning ir backward compatibility leidžia gamintojams evoliucionuoti nesulaužant esamų vartotojų.
| Strategija | Pavyzdys |
|---|
| URI path | GET /v2/orders/42 |
| Header | Accept: application/vnd.api.v2+json |
| Schema evolution | pridėkite laukus, niekada jų netrinkite/nepavadinkite |
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
}
Lauko numeriai, o ne vardai, apibrėžia laidų formatą, todėl laukų pridėjimas yra atgalinis suderinamas.
Release v2 ─▶ run v1 + v2 together ─▶ migrate consumers ─▶ deprecate v1 ─▶ remove v1
Niekada nepanaikinkite versijos, kuri vis dar naudojama tikru srauta. Prieš išnaudodami, sekite naudojimo duomenis.
Nepriklausomas diegiamumas veikia tik tada, kai gamintojas gali iš savo nuomone iš naujo versijas nesuderindamas kiekvieno vartotojo paleidimo.
Konstrukcija priedų keitimuose ir senos versijų palaikymas migracijoje - tai, kas išsaugo tą nepriklausomybę, o ne priverstinio trapaus didelio pamainos atnaujinimus.