Struktur URL REST API Terbaik: Panduan Desain Endpoint

Struktur URL REST API terbaik adalah menggunakan kata benda (noun) jamak untuk merepresentasikan resource, menerapkan huruf kecil (kebab-case), serta menghindari penggunaan kata kerja pada endpoint karena metode HTTP (GET, POST, PUT, DELETE) sudah merepresentasikan aksi yang dilakukan.

Desain URL yang konsisten sangat krusial untuk kemudahan pemeliharaan sistem, skalabilitas, serta kenyamanan developer lain yang mengonsumsi API tersebut. Endpoint yang terstruktur dengan baik membuat dokumentasi lebih intuitif dan meminimalisir kesalahan integrasi di sisi klien.

Aturan Dasar Penamaan URL REST API

Standar industri menetapkan beberapa aturan baku dalam mendesain endpoint agar bersih dan mudah dibaca:

  • Gunakan Kata Benda Jamak (Plural Nouns): Representasikan koleksi data dengan bentuk jamak, contoh /users atau /products, bukan bentuk tunggal /user.
  • Gunakan Huruf Kecil dan Pemisah Hub (kebab-case): Jika nama resource terdiri dari dua kata atau lebih, gunakan tanda hubung (-) sebagai pemisah, contoh /order-items.
  • Hindari Ekstensi File: Jangan menyertakan ekstensi seperti .json atau .xml pada URL. Gunakan header HTTP Accept untuk menentukan format data.
  • Gunakan Query Parameters untuk Filtering & Paginasi: Saring data atau batasi hasil menggunakan parameter kueri, bukan menambah segmen path baru.

Tabel Standar Desain Endpoint REST API

Berikut adalah tabel acuan cepat untuk memetakan operasi CRUD ke dalam struktur URL REST API yang ideal:

Aksi / Operasi Metode HTTP Struktur URL (Endpoint) Keterangan
Mendapatkan semua data GET /api/v1/products Mengembalikan daftar seluruh produk
Mendapatkan satu data spesifik GET /api/v1/products/{id} Mengembalikan detail produk berdasarkan ID
Menambah data baru POST /api/v1/products Membuat entitas produk baru
Memperbarui seluruh data PUT /api/v1/products/{id} Mengganti data produk secara utuh
Memperbarui sebagian data PATCH /api/v1/products/{id} Mengubah beberapa atribut produk tertentu
Menghapus data DELETE /api/v1/products/{id} Menghapus entitas produk

Pengelolaan Relasi dan Nested Resources

Ketika sebuah resource memiliki hubungan ketergantungan dengan resource lain (misalnya ulasan yang dimiliki oleh suatu produk tertentu), struktur URL dapat dibuat bersarang (nested). Namun, batasi maksimal kedalaman hingga dua tingkat agar URL tidak terlalu panjang dan rumit.

// Contoh Nested Resource untuk mengambil semua ulasan dari produk tertentu
GET /api/v1/products/45/reviews

// Contoh Nested Resource untuk mengambil ulasan spesifik dari produk tertentu
GET /api/v1/products/45/reviews/12

Untuk relasi yang kompleks atau tidak memiliki kepemilikan langsung (hierarki longgar), lebih baik menggunakan query parameters pada endpoint utama daripada membuat URL bersarang yang dalam.

Versioning (Versi API)

Sangat disarankan untuk menyertakan nomor versi pada struktur URL untuk mengantisipasi perubahan struktur data di masa depan tanpa merusak aplikasi klien yang sudah berjalan. Penempatan versi umumnya diletakkan di awal path URL setelah domain utama.

https://api.namadomain.com/v1/users
https://api.namadomain.com/v2/users

Filter, Urutkan, dan Paginasi

Jangan membuat endpoint terpisah untuk pencarian atau pengurutan data khusus jika resource dasarnya sama. Manfaatkan query parameters agar endpoint tetap bersih.

// Contoh penggunaan filter, sorting, dan paginasi
GET /api/v1/products?category=electronics&sort=price_asc&limit=10&page=2

Dengan menerapkan standar penamaan jamak, penggunaan metode HTTP yang tepat, serta pemanfaatan query parameter yang konsisten, arsitektur REST API Anda akan lebih mudah dikembangkan, dipahami oleh tim lain, serta minim kesalahan integrasi.