Prinsip Utama Desain API Routing
API routing yang efektif adalah fondasi dari sistem backend yang terukur (scalable) dan mudah dipelihara. Praktik terbaik berfokus pada konsistensi, penggunaan kata benda (nouns) daripada kata kerja (verbs), serta pemanfaatan metode HTTP yang tepat untuk merepresentasikan aksi pada sumber daya.
1. Gunakan Kata Benda (Nouns) untuk Resource
API harus merepresentasikan objek atau entitas. Hindari penggunaan kata kerja dalam URL. Gunakan bentuk jamak untuk koleksi.
- Buruk:
/getUsers,/deleteProduct - Baik:
/users,/products
2. Manfaatkan Metode HTTP Secara Semantik
Metode HTTP menentukan aksi yang dilakukan terhadap resource. Jangan mencampuradukkan aksi ke dalam URL.
| Metode | Aksi | Contoh Endpoint |
|---|---|---|
| GET | Membaca/List | GET /users |
| POST | Membuat | POST /users |
| PUT | Update Penuh | PUT /users/1 |
| PATCH | Update Parsial | PATCH /users/1 |
| DELETE | Menghapus | DELETE /users/1 |
3. Hierarki dan Relasi
Gunakan struktur bersarang untuk menunjukkan hubungan antar entitas. Batasi kedalaman hingga maksimal 2-3 level untuk menjaga keterbacaan.
GET /users/123/orders (Mengambil pesanan milik user 123)4. Filtering, Sorting, dan Pagination
Jangan membuat endpoint terpisah untuk filter. Gunakan query parameters agar API tetap bersih dan fleksibel.
- Filtering:
/products?category=electronics - Sorting:
/products?sort=price_desc - Pagination:
/products?page=2&limit=50
5. Versioning API
Versioning wajib dilakukan untuk menghindari breaking changes pada aplikasi klien. Gunakan versi di awal URL atau melalui header.
https://api.example.com/v1/users6. Keamanan dan Status Code
Selalu gunakan HTTP Status Code yang tepat untuk memberikan feedback kepada klien:
- 200 OK: Berhasil.
- 201 Created: Resource berhasil dibuat.
- 400 Bad Request: Kesalahan input klien.
- 401 Unauthorized: Butuh autentikasi.
- 403 Forbidden: Tidak memiliki izin akses.
- 404 Not Found: Resource tidak ditemukan.
- 500 Internal Server Error: Kesalahan pada server.
Tips Troubleshooting Lapangan
Jika API mengalami latensi tinggi, periksa apakah routing Anda menyebabkan N+1 query pada database. Gunakan teknik eager loading atau projection untuk membatasi data yang dikembalikan. Pastikan juga setiap endpoint yang bersifat sensitif dilindungi dengan middleware autentikasi (seperti JWT atau OAuth2) sebelum logika bisnis dijalankan.