HTTP Methods menentukan jenis operasi yang ingin dilakukan client terhadap resource di server. Masing-masing method punya semantik yang jelas.
Methods utama (CRUD):
| Method | Operasi | Idempotent | Body |
|---|---|---|---|
| GET | Baca data | Ya | Tidak |
| POST | Buat data baru | Tidak | Ya |
| PUT | Update seluruh resource | Ya | Ya |
| PATCH | Update sebagian resource | Tidak* | Ya |
| DELETE | Hapus resource | Ya | Opsional |
Methods tambahan:
- HEAD — sama seperti GET tapi tanpa body (cek header saja)
- OPTIONS — tanya server method apa saja yang didukung (dipakai CORS preflight)
Idempotent artinya mengirim request yang sama berkali-kali menghasilkan efek yang sama. GET 10x = GET 1x. Tapi POST 10x bisa membuat 10 data baru.
Status Codes — bahasa server ke client:
1xx — Informasional:
100 Continue— lanjutkan kirim body101 Switching Protocols— upgrade ke WebSocket
2xx — Sukses:
200 OK— request berhasil201 Created— resource baru berhasil dibuat204 No Content— sukses tapi tidak ada data dikembalikan (biasa untuk DELETE)
3xx — Redirect:
301 Moved Permanently— resource pindah permanen (SEO friendly)302 Found— redirect sementara304 Not Modified— gunakan cache yang ada
4xx — Client Error:
400 Bad Request— request tidak valid401 Unauthorized— belum login / token invalid403 Forbidden— login tapi tidak punya izin404 Not Found— resource tidak ditemukan409 Conflict— konflik data (misalnya email sudah terdaftar)422 Unprocessable Entity— validasi gagal429 Too Many Requests— rate limit tercapai
5xx — Server Error:
500 Internal Server Error— error di sisi server502 Bad Gateway— proxy/gateway mendapat response tidak valid503 Service Unavailable— server sedang down atau maintenance
// Contoh penanganan status codes:
async function createUser(data) {
const res = await fetch("/api/users", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(data)
});
if (res.status === 201) {
return await res.json(); // user berhasil dibuat
} else if (res.status === 422) {
const errors = await res.json();
console.log("Validasi gagal:", errors);
} else if (res.status === 429) {
console.log("Terlalu banyak request, coba lagi nanti");
}
}
Tips memilih status code yang tepat:
- Jangan selalu pakai
200untuk semua response - Gunakan
201saat membuat resource baru - Gunakan
204untuk DELETE yang sukses - Bedakan
401(belum login) dan403(tidak punya izin)