HTTP Method — API

HTTP Method menentukan aksi yang ingin dilakukan terhadap resource. 4 method utama (CRUD): Method Aksi Contoh GET Ambil data Lihat daftar produk POST Buat…

HTTP method adalah kata kerja di depan setiap request: dia bilang mau diapakan resource di alamat itu. Alamatnya kata benda (/books/2), method-nya kata kerja (GET, DELETE). Bayangin rak di toko buku. Di rak yang sama kamu bisa melihat isinya, menaruh buku baru, mengganti satu buku dengan edisi baru, membetulkan label harganya saja, atau menarik buku dari rak. Raknya sama, yang beda cuma apa yang kamu lakukan.

🧪 Tebakan cepat: tombol Simpan di form admin Toko Buku ke-klik dua kali, dan tiap klik mengirim POST /books yang sama persis. Ada berapa buku baru di server? Tebak dulu, jawabannya ada di bagian "Aman dan idempoten".

Lima method di API Toko Buku

Method Artinya Contoh Jawaban kalau berhasil
GET ambil GET /books/2 200 OK + bukunya
POST buat baru POST /books 201 Created + header Location: /books/4
PUT ganti seluruhnya PUT /books/2 200 OK + buku versi baru
PATCH ubah sebagian PATCH /books/2 200 OK + buku versi baru
DELETE hapus DELETE /books/2 204 No Content, tanpa body

Method yang gak cocok dengan alamatnya dijawab 405 Method Not Allowed plus header Allow. Contoh: PUT /books (tanpa nomor) dijawab Allow: GET, POST.

PUT mengganti, PATCH menambal

Buku nomor 2 di server, sebelum diubah:

{"id": 2, "title": "Bumi Manusia", "author_id": 2, "price": 125000, "stock": 0}

PATCH /books/2 dengan body {"stock": 7} cuma mengubah yang dikirim:

{"id": 2, "title": "Bumi Manusia", "author_id": 2, "price": 125000, "stock": 7}

PUT /books/2 dengan body {"title": "Bumi Manusia", "price": 99000} mengganti seluruh isinya dengan body itu:

{"id": 2, "title": "Bumi Manusia", "price": 99000}

author_id dan stock hilang, karena gak ikut dikirim. API yang lebih ketat akan menolak PUT yang kurang lengkap. Aturannya: PUT kirim semua field, PATCH kirim yang berubah saja.

Aman dan idempoten

Dua sifat yang menentukan kapan sebuah request boleh diulang:

Request Kirim pertama Kirim kedua Data akhir
POST /books 201, buku 4 dibuat 201, buku 5 dibuat dua buku baru yang isinya sama
PUT /books/2 200 200 sama: price 99000
DELETE /books/2 204 404 sama: buku 2 gak ada

Jadi tombol yang ke-klik dua kali bikin dua buku baru, nomor 4 dan 5. Itu jawaban tebakannya. Perhatikan DELETE: balasan keduanya beda (404), tapi data di server sama, jadi tetap idempoten. Idempoten itu soal data, bukan soal balasan.

Ini penting waktu jaringan putus di tengah jalan. PUT dan DELETE aman dikirim ulang. POST yang dikirim ulang bisa bikin data dobel.

GET hanya untuk membaca

GET /api/siswa/5?nama=Budi+Baru kelihatannya praktis, tapi salah: GET gak boleh mengubah data. Browser, mesin pencari, dan cache boleh mengirim GET kapan saja, misalnya saat memuat halaman lebih dulu, tanpa ada orang yang berniat mengubah apa pun. Untuk mengubah nama, kirim PATCH /api/siswa/5 dengan body {"nama": "Budi Baru"}.

Latihan: empat endpoint untuk books

app di latihan punya satu function per method. Bentuknya selalu sama:

app.get("/books", (req, res) => {
  res.json({ method: "GET" });
});

app.post("/books", (req, res) => {
  res.status(201).json({ method: "POST" });
});

⚠️ Jebakan yang sering ketemu

TL;DR: Method adalah kata kerja request. GET mengambil (200), POST membuat data baru di koleksi (201 Created + Location), PUT mengganti seluruh isi, PATCH mengubah sebagian, DELETE menghapus (204, atau 200 kalau ada body). GET aman, gak mengubah data, jadi jangan pakai GET untuk update. GET, PUT, DELETE idempoten: diulang pun data akhirnya sama. POST tidak: dua klik, dua buku. Method yang gak cocok dengan alamatnya dijawab 405 plus header Allow.

Yang akan kamu pelajari