Pengenalan API Design
Prinsip-prinsip dasar merancang API yang baik untuk backend
Apa itu API Design
- Proses merancang antarmuka yang memungkinkan aplikasi berkomunikasi
- API menjadi kontrak antara backend dan frontend atau layanan lain
- Design yang baik memudahkan integrasi dan maintenance
Prinsip API yang Baik
Konsisten
- Gunakan konvensi penamaan yang seragam di seluruh endpoint
- Format response seragam untuk semua endpoint
- Error handling dengan struktur yang sama
Intuitif
- Nama endpoint mencerminkan resource yang diakses
- Method HTTP sesuai dengan operasi yang dilakukan
- Response mudah dipahami tanpa dokumentasi berlebihan
Versioned
- API harus bisa berevolusi tanpa merusak consumer yang ada
- Gunakan versioning sejak awal meski belum diperlukan
- Jangan mengubah behavior endpoint yang sudah dipakai
Resource Naming
Gunakan Noun, Bukan Verb
/usersbukan/getUsers/ordersbukan/createOrder- Method HTTP menunjukkan aksi: GET, POST, PUT, DELETE
Gunakan Plural
/userslebih konsisten daripada/user/users/123/ordersmenunjukkan hubungan resource
Hierarchical Resources
/users/123/orders— orders milik user dengan ID 123/orders/456/items— items dalam order dengan ID 456
Format Response yang Konsisten
{
"data": {
"id": 1,
"nama": "Andi"
},
"meta": {
"timestamp": "2024-01-01T00:00:00Z"
}
}Format Error yang Konsisten
{
"error": {
"code": "USER_NOT_FOUND",
"message": "User dengan ID 123 tidak ditemukan",
"status": 404
}
}HTTP Method yang Tepat
| Method | Operasi | Idempoten |
|---|---|---|
| GET | Membaca data | Ya |
| POST | Membuat data baru | Tidak |
| PUT | Memperbarui seluruh data | Ya |
| PATCH | Memperbarui sebagian data | Tidak selalu |
| DELETE | Menghapus data | Ya |
Idempoten berarti hasil tetap sama meski request diulang.
Response Status Code yang Tepat
200— request berhasil diproses201— resource baru berhasil dibuat204— berhasil tanpa body response400— data request tidak valid401— belum autentikasi403— tidak punya izin404— resource tidak ditemukan409— konflik data, misalnya data sudah ada422— validasi gagal500— kesalahan server
Praktik Terbaik
- Gunakan HTTPS untuk semua API di production
- Jangan pernah expose informasi sensitif di URL
- Batasi ukuran request body untuk mencegah abuse
- Dokumentasikan API dengan OpenAPI atau Swagger
- Rate limit endpoint untuk mencegah overload