Status Code: Membaca Arti Angka 200, 404, Sampai 500
Memahami keluarga status code 1xx sampai 5xx dan kode penting yang wajib hafal, plus cara menanganinya di fetch.
Kode tiga digit yang penuh arti
Setiap response HTTP diawali angka tiga digit bernama status code. Angka pertamanya menunjukkan keluarga besar hasilnya:
- 1xx : informasi, request diterima dan sedang diproses.
- 2xx : sukses.
200 OKartinya berhasil,201 Createdartinya data baru berhasil dibuat. - 3xx : redirect, kamu dialihkan ke alamat lain.
- 4xx : error dari sisi client, ada yang salah dengan request-mu.
- 5xx : error dari sisi server, servernya yang bermasalah.
Kode yang wajib hafal
Kamu tidak perlu hafal semuanya, cukup yang sering muncul ini:
200: sukses, ini yang paling sering kamu lihat.201: data berhasil dibuat (biasanya balasan dariPOST).204: sukses tapi tidak ada konten balasan (umum untukDELETE).301/302: pindah permanen atau sementara ke URL lain.400: request-mu salah format, misalnya JSON-nya rusak.401: belum login, token hilang atau kedaluwarsa.403: sudah login tapi tidak punya izin akses resource ini.404: alamat tidak ditemukan, yang paling terkenal.409: konflik, misalnya mendaftar dengan email yang sudah dipakai.422: validasi gagal, misalnya password terlalu pendek.429: kebanyakan request, kena rate limit.500: server error, ada bug di backend.503: server sibuk atau sedang maintenance.
Menanganinya di fetch
Perangkap klasik: fetch hanya melempar error saat jaringan gagal total. Status 404 atau 500 dianggap "response normal" oleh fetch. Kamu harus cek sendiri:
const res = await fetch("https://learn.omnidevv.biz.id/api/artikel/999");
if (!res.ok) {
// res.ok bernilai true hanya untuk status 200-299
if (res.status === 404) {
console.log("Artikel tidak ditemukan, tampilkan halaman kosong.");
} else if (res.status === 401) {
console.log("Belum login, arahkan ke halaman login.");
} else {
console.log("Error tak terduga: " + res.status);
}
}Catatan teknis: Hati-hati dengan API yang mengembalikan status
200untuk semua kondisi, termasuk saat error, lalu menaruh kode error asli di dalam body JSON. Ini bikin frontend sulit karenares.okselalu true. Kalau kamu menemukan API seperti ini, selalu baca field status di body responsnya, dan kalau kamu yang mendesain API, pakai status code HTTP dengan benar.
Jangan lupakan body error
Status code memberi tahu jenis masalahnya, tapi detailnya ada di body respons. API yang baik menyertakan pesan yang bisa dibaca:
{
"error": "VALIDATION_FAILED",
"message": "Password minimal 8 karakter",
"field": "password"
}Biasakan membaca body ini saat debugging, bukan cuma angkanya. Di kode, kamu bisa menampilkannya langsung ke user untuk error validasi (pesannya memang dibuat untuk manusia), tapi untuk error 500, tampilkan pesan umum saja dan simpan detailnya di console. Bedanya: error 4xx biasanya salah user dan pesannya membantu, error 5xx itu urusan backend.