Karena layanan digunakan secara independen, Anda tidak pernah dapat mengasumsikan bahwa penelepon ditingkatkan secara serentak. Versioning API ditambah kompatibilitas mundur memungkinkan produsen berkembang tanpa merusak konsumen yang ada.
Karena layanan digunakan secara independen, Anda tidak pernah dapat mengasumsikan bahwa penelepon ditingkatkan secara serentak. Versioning API ditambah kompatibilitas mundur memungkinkan produsen berkembang tanpa merusak konsumen yang ada.
| Strategi | Contoh |
|---|
| Path URI | GET /v2/orders/42 |
| Header | Accept: application/vnd.api.v2+json |
| Evolusi skema | tambahkan bidang, jangan pernah hapus/ubah nama |
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
}
Nomor bidang, bukan nama, menentukan format kabel, jadi menambahkan bidang kompatibel mundur.
Release v2 ─▶ run v1 + v2 together ─▶ migrate consumers ─▶ deprecate v1 ─▶ remove v1
Jangan pernah hapus versi saat lalu lintas nyata masih menggunakannya. Lacak penggunaan sebelum pensiun.
Deployabilitas independen hanya berfungsi jika produsen dapat mengirimkan perubahan tanpa mengoordinasikan rilis setiap konsumen.
Merancang perubahan aditif dan mendukung versi lama selama migrasi adalah yang mempertahankan kemandirian itu alih-alih memaksa upgrade big-bang yang rapuh.