Eftersom tjänster distribueras oberoende kan du aldrig anta att anropare uppgraderas samtidigt. API-versionering plus bakåtkompatibilitet låter producenter utvecklas utan att bryta befintliga konsumenter.
Eftersom tjänster distribueras oberoende kan du aldrig anta att anropare uppgraderas samtidigt. API-versionering plus bakåtkompatibilitet låter producenter utvecklas utan att bryta befintliga konsumenter.
| Strategi | Exempel |
|---|
| URI-sökväg | GET /v2/orders/42 |
| Huvud | Accept: application/vnd.api.v2+json |
| Schemaevolution | lägg till fält, ta aldrig bort/byt namn |
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
}
Fältnummer, inte namn, definierar trådformatet, så att lägga till fält är bakåtkompatibelt.
Release v2 ─▶ run v1 + v2 together ─▶ migrate consumers ─▶ deprecate v1 ─▶ remove v1
Ta aldrig bort en version medan verklig trafik fortfarande använder den. Spåra användning före pensionering.
Oberoende distribution fungerar bara om en producent kan leverera en ändring utan att koordinera varje konsuments release.
Omfattning för additiv förändring och stöd för gamla versioner under migration är det som bevarar den oberoende snarare än att tvinga skörhetiga big-bang-uppgraderingar.