API yang baik adalah API yang mudah dipahami, konsisten, dan predictable.
Prinsip RESTful:
- Gunakan noun, bukan verb:
/usersbukan/getUsers - Gunakan plural:
/usersbukan/user - Nested resources:
/users/5/postsbukan/getUserPosts?userId=5 - Method = aksi: GET = baca, POST = buat, PUT = update, DELETE = hapus
Versioning:
/api/v1/users
/api/v2/users
Versi baru tanpa break versi lama.
Konsisten response format:
// Sukses
{ "data": {...}, "message": "Success" }
// Error
{ "error": { "code": "NOT_FOUND", "message": "User not found" } }
// List
{ "data": [...], "meta": { "page": 1, "total": 100 } }
Filter, sort, search:
GET /products?category=electronics&sort=price&order=desc&search=laptop
Idempotency:
- GET, PUT, DELETE dipanggil berulang = hasil sama
- POST dipanggil berulang = data baru setiap kali
- Gunakan idempotency key untuk POST yang perlu safe retry