Lompat ke konten utama
←

Backend Node.js Dasar: Rute, Middleware, dan Pengujian

Pelajaran 5 dari 16

Handler dan JSON: badan, validasi, galat

Validasi masukan dan galat terstruktur

Setelah pelajaran ini kamu bisa memvalidasi data JSON di server tanpa mengubah tipe diam-diam dan melaporkan semua pelanggaran sekaligus sebagai problem details 422 dengan errors berpointer.

±14 menitDiperiksa 23 Okt 2026

Latihan di pelajaran ini butuh akun gratis. Progres, kode, dan catatanmu hanya tersimpan di browser ini. Masuk untuk menyimpannya

Materi

JSON yang sah belum tentu data yang sah. {"jumlah": -2} lolos JSON.parse, tetapi pesanan minus dua roti tidak masuk akal. Validasi memeriksa data sesudah diurai: field wajib ada, tipenya benar tanpa diubah diam-diam, nilainya di rentang yang diizinkan, dan pilihannya termasuk daftar yang dikenal. Prinsip validasi itu sudah dibahas di kelas Pemrograman Web Aman; pelajaran ini berfokus pada cara server melaporkan hasilnya.

RFC 9110 §15.5.21 menetapkan 422 Unprocessable Content untuk permintaan yang jenis isinya dipahami dan sintaksnya benar, tetapi instruksinya tidak bisa diproses. Jadi JSON rusak dijawab 400, sedangkan JSON sah yang melanggar aturan dijawab 422. MDN menambahkan bahwa mengulang permintaan 422 tanpa perubahan akan gagal dengan galat yang sama, sehingga klien perlu tahu persis apa yang harus diperbaiki.

HTTP/1.1 422 Unprocessable Content
Content-Type: application/problem+json

{
  "type": "https://api.mentari.example/masalah/validasi",
  "title": "Data tidak valid",
  "status": 422,
  "errors": [
    { "pointer": "#/telepon", "detail": "wajib diisi" },
    { "pointer": "#/alamat/kota", "detail": "harus teks" }
  ]
}

Contoh di RFC 9457 memakai member tambahan errors: daftar pelanggaran, masing-masing dengan detail dan pointer. pointer adalah JSON Pointer dalam bentuk fragmen URI: #/nama untuk field nama, #/barang/0/jumlah untuk jumlah pada barang pertama, dan # saja untuk seluruh badan. Kumpulkan semua pelanggaran dalam satu respons. Server yang berhenti di pelanggaran pertama memaksa pengguna mengirim ulang formulir sekali untuk setiap kesalahan.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Formulir pesanan katering dikirim dengan tiga field yang salah sekaligus. Server A hanya melaporkan pelanggaran pertama yang ditemukannya di setiap respons; pengguna memperbaiki tepat field yang dilaporkan, lalu mengirim ulang. Berapa kali formulir itu dikirim ke server A, termasuk kiriman pertama, sampai pesanan diterima?

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke

Tampilkan 1 lagi