Validasi Input & Format Error yang Konsisten

Menolak input yang salah dengan status 422 dan membuat satu format error yang sama untuk seluruh API.

Part 8 dari 17 ± 30 menit Gratis

Jangan percaya input

Client bisa mengirim apa saja: judul kosong, hanya spasi, atau teks sepanjang novel. API yang baik memeriksa input sebelum menyimpannya dan memberi tahu client dengan jelas apa yang salah.

Format error yang konsisten

Semua error sebaiknya berbentuk sama agar mudah ditangani client. Kita buat satu struct dan satu helper:

type ErrorResponse struct {
    Error string `json:"error"`
}

func writeError(w http.ResponseWriter, status int, msg string) {
    writeJSON(w, status, ErrorResponse{Error: msg})
}

Pemakaiannya: writeError(w, http.StatusNotFound, "todo tidak ditemukan") → {"error":"todo tidak ditemukan"}.

400 atau 422?

KodeDipakai ketikaContoh
400 Bad RequestPermintaan tidak bisa dibacaJSON rusak
422 Unprocessable EntityTerbaca, tetapi isinya tidak validtitle kosong

Aturan validasi untuk title

  1. Buang spasi di awal/akhir: strings.TrimSpace.
  2. Tidak boleh kosong setelah dibersihkan.
  3. Maksimal 100 karakter: len(title) > 100.
title := strings.TrimSpace(in.Title)
if title == "" {
    writeError(w, http.StatusUnprocessableEntity, "title wajib diisi")
    return
}

Validasi dilakukan sebelum store.Add, dan setiap pelanggaran langsung return.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X