Oleh kerana perkhidmatan dilancurkan secara bebas, anda tidak boleh mengandaikan bahawa pemanggil meningkatkan secara serentak. API versioning ditambah backward compatibility membenarkan pengeluar berkembang tanpa memecahkan pengguna sedia ada.
Oleh kerana perkhidmatan dilancurkan secara bebas, anda tidak boleh mengandaikan bahawa pemanggil meningkatkan secara serentak. API versioning ditambah backward compatibility membenarkan pengeluar berkembang tanpa memecahkan pengguna sedia ada.
| Strategi | Contoh |
|---|
| URI path | GET /v2/orders/42 |
| Header | Accept: application/vnd.api.v2+json |
| Schema evolution | tambah medan, jangan buang/namakanulang |
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 medan, bukan nama, menentukan format wayar, jadi menambah medan adalah serasi ke belakang.
Release v2 ─▶ run v1 + v2 together ─▶ migrate consumers ─▶ deprecate v1 ─▶ remove v1
Jangan sekali-sekali keluarkan versi sementara lalu lintas sebenar masih menggunakannya. Jejaki penggunaan sebelum bersara.
Kebolehupayaan penggunaan bebas hanya berfungsi jika pengeluar dapat menghantar perubahan tanpa menyelaraskan setiap keluaran pengguna.
Merancang untuk perubahan aditif dan menyokong versi lama semasa penghijrahan adalah yang memelihara kemandirian itu dan bukannya memaksa naik taraf big-bang yang rapuh.