Pola Desain API: Membangun API yang Tidak Menyebalkan
API sering kali menjadi pintu depan dari aplikasi atau layanan Anda. Jika membingungkan, tidak konsisten, atau buruk desainnya, developer akan menghindarinya—atau lebih parah lagi, menyalahgunakannya.
Panduan ini merangkum pengalaman bertahun-tahun membangun backend dan pelajaran nyata dari lapangan menjadi pola desain yang membuat API Anda menyenangkan untuk digunakan.
1. Desain Berorientasi Resource (ROA)
Rancang API Anda berdasarkan kata benda (resource), bukan kata kerja:
✅ GET /users/42
✅ POST /users
❌ POST /createUser
Manfaat:
- URL yang mudah diprediksi
- Perilaku konsisten
- Lebih mudah di-cache dan didokumentasikan
2. Gunakan Semantik HTTP dengan Benar
Method | Tujuan |
---|---|
GET | Membaca resource |
POST | Membuat resource |
PUT | Mengganti resource |
PATCH | Memperbarui resource |
DELETE | Menghapus resource |
Contoh:
GET /posts/123
PATCH /posts/123
DELETE /posts/123
Hindari menggunakan POST untuk semuanya.
3. Konvensi Penamaan Konsisten
- Gunakan snake_case atau camelCase, jangan campur keduanya
- Hindari singkatan:
created_at
, bukancrtd_dt
- Gunakan kata benda jamak untuk koleksi:
/users
, bukan/user
4. Terapkan Versioning
Versi-kan API Anda sejak awal:
GET /v1/users
Hindari perubahan yang merusak. Jika perlu, tingkatkan versi.
5. Format Respons Error yang Standar
Error harus terstruktur dan informatif:
{
"error": {
"code": "INVALID_INPUT",
"message": "Format email tidak valid.",
"details": {
"field": "email"
}
}
}
6. Pagination, Filtering, dan Sorting
Untuk koleksi besar, selalu dukung:
GET /posts?page=2&limit=10&sort=-created_at&filter[author]=hasan
Praktik Terbaik:
- Gunakan pagination berbasis cursor jika performa penting
- Izinkan filter pada field umum
- Izinkan multi-sort jika memungkinkan
7. Idempoten
Pastikan klien bisa melakukan retry tanpa efek samping:
- GET, PUT, DELETE sudah idempoten secara alami
- Untuk POST, dukung header
Idempotency-Key
:
POST /payments
Idempotency-Key: abc123
8. Hypermedia sebagai Mesin Status Aplikasi (HATEOAS)
Buat API yang dapat ditemukan dengan link:
{
"id": 123,
"title": "REST Patterns",
"_links": {
"self": { "href": "/posts/123" },
"author": { "href": "/users/42" }
}
}
Meskipun tidak wajib, ini meningkatkan UX dan integrasi.
9. OpenAPI & Dokumentasi Sejak Awal
Rancang API Anda menggunakan spesifikasi OpenAPI sebelum implementasi.
- Dapatkan masukan sejak awal
- Hasilkan dokumentasi, SDK, dan klien secara otomatis
- Standarisasi antar tim
Tools: Swagger UI, Stoplight, Redocly
10. Autentikasi & Otorisasi
Gunakan standar industri:
- OAuth 2.0 atau JWT untuk autentikasi
- API key hanya untuk penggunaan internal
- Role-based access control (RBAC)
Contoh:
Authorization: Bearer eyJhbGciOi...
Bonus: Buat Ramah Developer
- Sediakan contoh
curl
dan Postman - Kembalikan error validasi yang jelas
- Selalu sertakan status code, seperti
200 OK
,400 Bad Request
- Gunakan bentuk respons yang konsisten:
{
"data": {...},
"meta": {...},
"errors": [...]
}
Kesimpulan
Desain API yang baik tidak memerlukan jenius—hanya empati dan disiplin. Pola-pola ini bertujuan mengurangi friksi bagi pengguna Anda sekaligus menjaga sistem tetap terpelihara dan mudah dikembangkan.
Pola mana yang Anda harap lebih banyak diikuti oleh API lain? Yuk ngobrol di LinkedIn.