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.
| Member | Isi | Yang diuji |
|---|---|---|
| type | URI pengenal jenis masalah | bila tidak ada, dianggap about:blank |
| status | kode status HTTP sebagai angka | harus sama dengan status respons sebenarnya |
| title | ringkasan singkat jenis masalah | tidak berubah antar-kejadian, kecuali diterjemahkan |
| detail | penjelasan kejadian ini | untuk manusia; klien tidak mengurainya |
| instance | URI kejadian ini | opsional |
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.