API Client & Error Handling
Abstraksi pemanggilan HTTP typed fetch, model penanganan error, dan mekanisme retry otomatis.
Status: Stablev1.0.0Source Verified: Yes
Source:
src/lib/apiClient.ts, src/types/api.tsTests: tests/unit/binaryResponse.test.tsAPI Client & Error Handling#
Seluruh komunikasi HTTP dari browser ke API Route Handlers dikelola melalui modul klien terpusat yang memiliki tipe data ketat (strongly typed).
1. Abstraksi requestJson<T>#
typescript
typescript
1import { requestJson } from "@/lib/apiClient";23// Contoh pemanggilan dengan tipe balik yang aman4const response = await requestJson<PatientRegistrationResponse>("/api/patients", {5 method: "POST",6 body: JSON.stringify(patientPayload),7});
Fitur utama requestJson:
- Secara otomatis menyertakan header
Content-Type: application/jsondancredentials: "include". - Melakukan unwrap JSON response dan melempar
ApiErrorterstruktur jika status code bukan 2xx. - Mendukung parameter
timeoutMsuntuk membatalkan request yang menggantung.
2. Struktur Error Response Terstandar#
json
json
1{2 "error": "BAD_REQUEST",3 "message": "NIK pasien wajib terdiri dari 16 digit angka yang valid.",4 "code": 400,5 "details": {6 "field": "nik",7 "received": "12345"8 }9}
3. Umpan Balik Notifikasi UI (Sonner)#
Kesalahan jaringan atau validasi ditampilkan kepada operator/dokter melalui notifikasi toast yang elegan menggunakan pustaka sonner:
toast.success(message): Berhasil menyimpan data sesi atau verifikasi pasien.toast.error(message): Kegagalan koneksi sensor atau kesalahan validasi form.