API Versioning memastikan perubahan API tidak merusak client yang sudah ada.
Strategi versioning:
1. URL Versioning (paling populer):
GET /api/v1/users
GET /api/v2/users
Kelebihan: jelas, mudah di-cache, mudah di-route. Kekurangan: URL berubah.
2. Header Versioning:
GET /api/users
Accept: application/vnd.myapi.v2+json
Kelebihan: URL tetap bersih. Kekurangan: sulit di-test di browser.
3. Query Parameter Versioning:
GET /api/users?version=2
Kelebihan: mudah diimplementasi. Kekurangan: mudah terlupa, sulit di-cache.
Semantic Versioning untuk API:
v1.0.0 → Major.Minor.Patch
- Major: breaking changes (v1 → v2)
- Minor: fitur baru, backward compatible
- Patch: bug fix
Strategi Deprecation:
- Umumkan deprecation jauh-jauh hari (6-12 bulan)
- Tambahkan header Deprecation dan Sunset di response
- Sediakan migration guide dari versi lama ke baru
- Monitor penggunaan versi lama sebelum dimatikan
Deprecation: true
Sunset: Sat, 01 Jan 2025 00:00:00 GMT
Link: <https://docs.api.com/migration>; rel="successor-version"
Backward Compatibility:
- Jangan hapus field yang sudah ada
- Tambahkan field baru sebagai opsional
- Jangan ubah tipe data field yang ada
- Gunakan default values untuk field baru
- Test dengan client versi lama sebelum deploy