httpstatus-codedebuggingPemula4 mnt baca

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 OK artinya berhasil, 201 Created artinya 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 dari POST).
  • 204 : sukses tapi tidak ada konten balasan (umum untuk DELETE).
  • 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:

javascript
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 200 untuk semua kondisi, termasuk saat error, lalu menaruh kode error asli di dalam body JSON. Ini bikin frontend sulit karena res.ok selalu 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:

json
{
  "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.