TIL | Resource-oriented REST API
What is the difference between Rest API, Restful API, and Resource-oriented Rest API?
Suka gemes aja liat ada developer yan bikin route API kayak model gini:
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:
Dan hasilnya kita sudah mempunyai route dari fitur CRUD untuk data user.
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.