restapi-designarsitekturMenengah5 mnt baca

Prinsip REST: Cara Mendesain API yang Rapi

Memahami REST sebagai gaya arsitektur: resource-based URL, stateless, dan contoh desain endpoint CRUD yang konsisten.

REST itu gaya, bukan aturan kaku

REST (Representational State Transfer) adalah gaya arsitektur untuk mendesain API, bukan standar yang mengikat. Intinya sederhana: anggap semua yang ada di server sebagai resource (sumber daya) yang punya alamat (URL), dan gunakan HTTP method sebagai kata kerjanya. API yang mengikuti gaya ini disebut RESTful.

Resource, bukan aksi

Kesalahan paling umum pemula: menaruh kata kerja di URL seperti /getArtikel atau /hapusUser. Di REST, kata kerjanya sudah diwakili method HTTP, jadi URL cukup berisi kata benda:

http
GET    /api/artikel       # ambil semua artikel
POST   /api/artikel       # buat artikel baru
GET    /api/artikel/42    # ambil artikel id 42
PUT    /api/artikel/42    # ganti total artikel 42
PATCH  /api/artikel/42    # ubah sebagian artikel 42
DELETE /api/artikel/42    # hapus artikel 42

Untuk relasi, susun secara hierarkis: GET /api/artikel/42/komentar artinya "ambil komentar milik artikel 42". Konsisten seperti ini membuat API bisa ditebak tanpa membaca dokumentasi panjang.

Prinsip-prinsip REST secara ringkas

REST punya enam prinsip, tapi empat ini yang paling terasa dampaknya buat frontend:

  1. Client-server terpisah. Frontend dan backend berkembang mandiri, komunikasinya hanya lewat kontrak API.
  2. Stateless. Setiap request membawa semua info yang dibutuhkan (biasanya token di header). Server tidak menyimpan "sesi ngobrol".
  3. Cacheable. Response boleh di-cache. Header seperti Cache-Control memberi tahu frontend kapan boleh memakai data lama.
  4. Uniform interface. URL konsisten, method dipakai semestinya, status code jujur, format respons seragam.

Dua sisanya, layered system dan code on demand, lebih relevan buat arsitek backend dan jarang kamu sentuh langsung.

Contoh respons yang konsisten

API yang rapi punya bentuk respons yang bisa ditebak. Misalnya selalu membungkus data dalam objek yang sama:

json
{
  "success": true,
  "data": { "id": 42, "judul": "Belajar HTTP" },
  "message": "Artikel ditemukan"
}

Dan saat error:

json
{
  "success": false,
  "data": null,
  "message": "Artikel tidak ditemukan"
}

Dengan pola seragam seperti ini, kode frontend-mu jadi sederhana: cukup cek success, ambil data, tampilkan message kalau gagal.

Catatan teknis: Di dunia nyata, banyak API yang mengaku RESTful padahal cuma "REST-ish": misalnya semua operasi lewat POST, atau URL masih berisi kata kerja. Itu tidak masalah selama konsisten. Jangan berdebat soal kemurnian REST di forum sampai lupa ngoding; yang penting API-nya bisa ditebak, terdokumentasi, dan stabil.