Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Pengujian Kontrak API: JSON Schema, Respons Galat, dan Regresi

Pelajaran 9 dari 13

Batas nilai, skenario negatif, dan respons galat

Respons galat: problem details (RFC 9457)

Setelah pelajaran ini kamu bisa memeriksa respons galat berformat problem details: jenis media, member type, status, title, detail, dan errors berisi JSON Pointer.

±13 menitDiperiksa 7 Okt 2026

Materi

Respons galat juga bagian kontrak. Tanpa format bersama, setiap API menulis galatnya sendiri dan klien harus menebak di mana pesannya. RFC 9457 mendefinisikan problem details, objek JSON berjenis media application/problem+json yang membawa rincian galat dalam bentuk terbaca mesin. RFC ini menggantikan RFC 7807.

MemberIsiYang diuji
typeURI pengenal jenis masalahbila tidak ada, dianggap about:blank
statuskode status HTTP sebagai angkaharus sama dengan status respons sebenarnya
titleringkasan singkat jenis masalahtidak berubah antar-kejadian, kecuali diterjemahkan
detailpenjelasan kejadian iniuntuk manusia; klien tidak mengurainya
instanceURI kejadian iniopsional

Tiga aturan RFC 9457 langsung menjadi pemeriksaan. Pertama, member status hanya bersifat saran, dan pembuatnya wajib memakai kode yang sama di respons HTTP sebenarnya, sehingga respons 422 dengan member status 400 adalah pelanggaran. Kedua, member yang tipenya salah wajib diabaikan, jadi type bernilai angka diperlakukan seolah tidak ada, yaitu about:blank. Ketiga, klien wajib mengabaikan member tambahan yang tidak dikenalnya, sehingga member tambahan seperti errors boleh ada.

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

{
  "type": "https://api.pustaka.example/masalah/validasi",
  "title": "Data peminjaman tidak sah.",
  "status": 422,
  "errors": [ { "detail": "harus integer positif", "pointer": "#/hari" } ]
}

Contoh di RFC 9457 memakai member tambahan errors: daftar pelanggaran yang masing-masing membawa detail dan pointer, yaitu JSON Pointer dalam bentuk fragmen URI seperti #/hari. MDN menjelaskan 422 sebagai permintaan yang jenis isi dan sintaksnya benar tetapi instruksinya tidak bisa diproses, dan klien yang mengulang tanpa mengubah apa pun akan menerima galat yang sama.

Latihan

0/3 lulus

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

Latihan 3 dari 3

Server Sumber Rezeki menjawab 404 dengan badan application/problem+json { "title": "Not Found", "status": 404 }, tanpa member type. Menurut RFC 9457, jenis masalah apa yang dipakai klien?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke