HTTP Method: Kata Kerja di Setiap Request
Mengenal GET, POST, PUT, PATCH, dan DELETE: kapan memakai yang mana, plus konsep safe dan idempotent.
Method menentukan aksi
Kalau URL adalah alamat tujuannya, maka method adalah kata kerjanya: mau ngapain ke alamat itu? Lima method ini menutupi hampir semua kebutuhan API:
- GET : mengambil data. Contoh: memuat daftar artikel.
- POST : membuat data baru. Contoh: mengirim form pendaftaran.
- PUT : mengganti seluruh data yang sudah ada. Contoh: menyimpan ulang profil lengkap.
- PATCH : mengubah sebagian data. Contoh: mengganti nama saja tanpa menyentuh field lain.
- DELETE : menghapus data. Contoh: menghapus komentar.
Contoh mentahnya:
GET /api/artikel HTTP/1.1
Host: learn.omnidevv.biz.idPOST /api/artikel HTTP/1.1
Host: learn.omnidevv.biz.id
Content-Type: application/json
{ "judul": "Belajar HTTP", "isi": "..." }Safe dan idempotent: dua sifat penting
Dua istilah ini sering muncul di dokumentasi API:
- Safe artinya request tidak mengubah apa pun di server.
GETitu safe, karena cuma membaca. Jangan pernah memakaiGETuntuk aksi seperti menghapus data, karena browser dan proxy boleh mengulang request GET kapan saja (misalnya saat refresh atau preload). - Idempotent artinya diulang berkali-kali hasilnya tetap sama.
PUTdanDELETEidempotent: menghapus data yang sama dua kali hasilnya tetap "data terhapus".POSTtidak idempotent: menekan tombol bayar dua kali bisa membuat dua transaksi.
Di JavaScript, method dipilih lewat opsi fetch:
// GET (default, tidak perlu ditulis eksplisit)
fetch("https://learn.omnidevv.biz.id/api/artikel");
// DELETE dengan method eksplisit
fetch("https://learn.omnidevv.biz.id/api/artikel/42", {
method: "DELETE",
});Dua method yang jarang disebut
Selain lima besar, ada dua method yang sering muncul diam-diam:
- HEAD : seperti
GETtapi tanpa body. Dipakai untuk mengecek "apakah resource ini ada dan seberapa besar?" tanpa mengunduh isinya. Berguna untuk validasi link atau cek ukuran file sebelum download. - OPTIONS : bertanya ke server "method apa saja yang boleh dipakai ke URL ini?". Browser mengirim ini otomatis sebagai preflight sebelum request lintas origin tertentu. Kamu tidak pernah memanggilnya manual, tapi error CORS yang kamu lihat di console sering berasal dari request ini.
Satu catatan: beberapa form HTML lawas dan client terbatas tidak mendukung PUT/PATCH/DELETE secara native. API kadang menyediakan trik method override: kirim POST biasa dengan field tambahan _method=DELETE, lalu server menerjemahkannya. Ini jalan pintas yang sah, bukan hack curang.
Catatan teknis:
GETtidak memiliki body request. Kalau kamu perlu mengirim data ke server, pakai query string untuk filter sederhana, atauPOST/PUTdengan body untuk data yang lebih besar. Server yang baik akan menolakGETber-body, dan proxy di tengah jalan bisa membuangnya diam-diam.