TIL | Resource-oriented REST API

What is the difference between Rest API, Restful API, and Resource-oriented Rest API?

Syofyan Zuhad
3 min readMar 13, 2023

Suka gemes aja liat ada developer yan bikin route API kayak model gini:

laravel route

Sekilas memang terlihat “readable” tapi struktur seperti ini terlihat kurang konsisten dan sulit di maintenance nantinya. Untuk di Laravel sendiri sudah disediakan method resource() untuk membuat CRUD hanya dalam 1 BARIS! Nanti akan kita bahas bagaimana caranya.

Kesalahan berikutnya adalah terlalu banyak tanggungjawab yang dibebankan pada satu controller. Screenshot diatas hanya cuplikan saja, karna sebetulnya masih banyak route yang menggunakan AdminController sebagai tempat untuk menaruh logic aplikasi.

OK, instead of doing the above, we can just only write this:

Pertama, kita perlu membuat controllernya terlebih dahulu. Kita hanya perlu menjalankan perintah:

php artisan make:controller UserController -r --api

*parameter -r artinya resource

Maka laravel akan membuat sebuah controller lengkap dengan 5 method untuk keperluan api yaitu: [ index, store, show, update, destroy ] yang siap digunakan oleh route api yang akan kita buat. Tentu harus diisi logic aplikasinya terlebih dahulu.

Kemudian untuk membuat route nya, kita cukup menulis satu baris seperti ini:

api resource route

Dan hasilnya kita sudah mempunyai route dari fitur CRUD untuk data user.

php artisan route:list

Struktur route seperti ini disebut dengan resource-oriented API. Karena strukturnya berorientasi resource. Yang menjadikan struktur ini lebih konsisten karena kita hanya perlu membedakannya berdasarkan http method.

  • /api/user : GET method (untuk mendapatkan list user)
  • /api/user : POST method (untuk membuat user baru)
  • /api/user/{id} : GET method (untuk mendapatkan 1 user)
  • /api/user/{id} : POST | PATCH method (untuk mengubah 1 data user)
  • /api/user/{id} : DELETE method (untuk menghapus 1 data user)

Dan 1 hal yang perlu diingat, jika kita ingin menambahkan route baru yang masih berhubungan dengan data user. Misal kita perlu membuat fitur import. Maka route untuk import ini perlu di definisikan sebelum atau diatas route resource dari laravel.

Hal ini karena jika kita mendefinisikannya setelah atau dibawah route resource laravel. Maka kata setelah / (slash) terakhir akan dianggap sebagai parameter dari route tersebut.

Hasilnya akan jadi seperti ini:

Kalo ada yang masih belum jelas bisa ditanyakan di kolom komentar.

Terakhir, jawaban dari pertanyaan apa bedanya REST API, RESTful API, dan juga Resource-oriented REST API?

REST adalah singkatan dari (RE)presentation (S)tate (Transfer) yaitu salah satu arsitektur yang paling populer yang digunakan saat ini. Biasanya REST API ini menggunakan format data .json dalam proses komunikasinya.

Adapun RESTful API hanyalah kata untuk menjelaskan bahwa sebuah API yang mengimplementasikan desain arsitektur REST secara keseluruhan. Karena imbuhan -ful disini dapat berarti full of source. Jadi untuk bisa disebut RESTful maka sebuah Web Service harus memenuhi prinsip-prinsip REST.

A Web API (or Web Service) conforming to the REST architectural style is a REST API.

source: https://restfulapi.net/

Sekian. Semoga bermanfaat.

--

--