Penggunaan Http Method GET dan POST pada REST API

Sebuah contoh kasus sikap coder yang epic fail sampah banget

Neraka ngoding
Neraka Ngoding
4 min readAug 14, 2019

--

Okay! pada posting kali ini saya bakal cerita tentang contoh kasus salah kaprah penggunaan http method seperti GET dan POST dalam REST API.

Secara best practice atau by definition HTTP Methods pada REST API.

  • GET digunakan untuk request data, State server tidak berubah walaupun di-GET terus-terusan kecuali data di server dirubah oleh client yang lain.
  • POST digunakan request update/create data. State server berubah hati-hati menggunakan method ini.

Karakteristik dari method GET adalah sebagai berikut :

  1. Tidak berbahaya.
  2. Dapat di-bookmarked seperti halaman website di-bookmarked di browser.
  3. Di-chached.
  4. application/x-www-form-urlencoded.
  5. Parameters request tersimpan di-history browser.
  6. Hanya karakter ASCII.
  7. Kurang secure.
  8. Data terlihat di url, misal https://codot.com/product?id=100.

Berbeda dengan GET berikut adalah karakteristik dari method POST :

  1. Tidak bisa di-bookmarked.
  2. Tidak di-chached.
  3. Application/x-www-form-urlencoded or multipart/form-data.
  4. Parameter request tidak disimpan di history browser.
  5. Data yang di request boleh apa saja.
  6. Lebih aman dari GET.
  7. Data tidak terlihat di url seperti GET.

Dari penjelasan karakteristik method GET dan POST diatas, jelas penggunaan nya. GET dari awal di-design untuk request data, baik secara performance atau security. Jangan bandel request data dengan menggunakan method POST. Method POST dari sono nya di-design untuk request yang bersifat create/update data di server, baik secara performance atau security sudah dioptimasi. Jangan bandel diganti GET.

Beberapa kasus penggunaan GET dan POST.

Login

Login adalah sebuah aktifitas yang merubah state server seperti user session. Login adalah sebuah aktifitas yang rahasia. WTF! banget kalo dimplementasikan dengan method GET misal :

epic fail. Pake https gituh loh.

Contoh kasus lain misal kita mau membuat sebuah api tujuan nya untuk request data buku. Awalnya gini :

Api nya kira-kira seperti ini :

Kemudian ada kebutuhan search. Dibuat lah api seperti ini :

API nya kira-kira seperti ini :

Kemudian kebutuhan terus berkembang parameter search tidak cukup dengan hanya id, judul, dan pengarang, tetapi perlu parameter penerbit, harga, diskon, review, dan lain-lain. Parameter akan sangat panjang sekali.

Parameter sudah mulai tidak terkontrol sodara-sodara! datang lah ksatria clean coder : Tidak boleh suatu method mempunyai banyak parameter sukar dibaca!

Okay! Okay! kita buat parameternya menjadi object seperti ini :

wah lumayan kodenya mudah dipahami clean code!!!.

Here we go! Api terakhir yang kita buat parameternya kan bukan tipe data primitive godaan pengen cepet selesai mulai sakau .Gimana bikin query string nya? Kayanya request pake json di body request POST enak tuh.

dirubahlah seperti ini :

dengan request di body json seperti dibawah. Misal pengarang tipe datanya array string.

banyak coder yang tidak tau caranya gimana membuat query string untuk API dengan parameter object. Banyak coder tau caranya POST dengan parameter object menggunakan json.

Coder mengubah jenis http method GET dengan PUT dengan alasan salah. karena tergoda untuk membuat kode supaya cepat selesai, emang mau kemana sih?. Boleh mengganti http method GET dengan PUT dengan alasan yang kuat.

Kejadian serupa banyak saya temui dalam kehidupan sehari-hari sebagai coder termasuk diri saya sendiri.

Photo by Chris Ried on Unsplash

Okay! segitu dulu salam Nerakahhhhhh Ngodingggggggg!!!!

--

--

Neraka ngoding
Neraka Ngoding

Coder terbaik sebatununggal-bandung, west java, indonesia belum terkalahkan selama 15 tahun. “Coder adalah Identitas bukan profesi”