# Hasil Kosong atau Error API: Bagaimana Membedakannya?

> Bedakan hasil kosong, jawaban parsial, dan error API ROOTE. Periksa koordinat, filter, cakupan, dan batas agar pesan yang tepat ditampilkan.

Source: https://www.roote.ai/id/guides/hasil-kosong-atau-error-api-bagaimana-membedakannya/
Language: id
Author: ROOTE

API tanpa hasil dan API dengan error membutuhkan penanganan yang berbeda. Pencarian yang berhasil bisa saja tidak mengembalikan lokasi apapun dalam wilayah yang diminta. Sebaliknya, error jaringan, batas penggunaan tercapai, atau sumber tidak tersedia mencegah kesimpulan dari pencarian.

Untuk ROOTE, periksa respons HTTP lalu status bisnis, koleksi yang diharapkan dan cakupan. Langkah ini mencegah menampilkan “tidak ada toilet” jika panggilan Layanan gagal atau “tidak ada halte” setelah waktu tunggu habis.

## Membaca tiga tingkatan dalam sebuah respons

| Tingkatan | Yang harus diperiksa | Kesimpulan yang mungkin |
| --- | --- | --- |
| Transport | Koneksi, waktu tunggu, dan status HTTP | Apakah permintaan berhasil? |
| Kontrak | JSON valid, versi, dan bidang yang diharapkan | Apakah respons dapat dipakai? |
| Hasil bisnis | status, koleksi, cakupan, peringatan, dan meta | Apa yang diketahui dalam wilayah yang diminta? |

Kode HTTP 200 saja tidak cukup untuk memvalidasi pencarian. Respons dapat menandakan eksekusi parsial atau status error. Sebaliknya, 404 pada sebuah rute bukan cara normal untuk menunjukkan koleksi kosong: periksa URL dan kontrak.

## Memahami success, empty, partial, dan error

| Status | Penanganan yang disarankan |
| --- | --- |
| success | Tampilkan entitas setelah validasi dan simpan batasan |
| empty | Tunjukkan bahwa tidak ada hasil untuk pencarian ini |
| partial | Tampilkan informasi yang dapat digunakan dengan peringatannya |
| error | Tampilkan pencarian sebagai tidak tersedia; jangan simpulkan tidak ada lokasi |

Ketiadaan hasil hanya berlaku untuk permintaan dan sumber yang dikenal. Itu tidak membuktikan bahwa tidak ada layanan fisik. Cakupan yang tidak lengkap, filter ketat, atau batas yang diterapkan bisa mengurangi hasil.

## Pohon keputusan untuk antarmuka Anda

```
1. La requête a-t-elle abouti ?
   Non → indisponibilité réseau ou délai dépassé.
2. Le statut HTTP est-il acceptable selon le contrat ?
   Non → traiter le code et le message d'erreur.
3. Le JSON respecte-t-il le schéma attendu ?
   Non → réponse inexploitable, jamais "aucun résultat".
4. Le statut métier est-il error ?
   Oui → recherche indisponible.
5. Le statut est-il partial ou la couverture limitée ?
   Oui → résultats utilisables + avertissement.
6. La collection attendue est-elle vide ?
   Oui → aucun résultat retourné dans ce périmètre.
   Non → afficher les résultats et leurs limites.
```

## Periksa parameter dengan urutan yang benar

Periksa dulu latitude dan longitude, urutannya, dan kota yang didapat. Lalu periksa satuan radius dan kosakata filter. API Layanan menggunakan types=toilets; URL peta menggunakan modes=toilets. Parameter ini milik kontrak yang berbeda.

Perluas satu dimensi sekaligus: tingkatkan radius dalam batas rute atau hilangkan filter untuk pengujian eksplisit. Catat permintaan awal. Jika Anda memperluas otomatis, beri tahu pengguna tentang wilayah baru.

[Membangun pencarian API berdasarkan koordinat GPS](https://www.roote.ai/id/guides/cara-mencari-henti-transit-terdekat-dengan-api/)

## Menangani sumber tidak tersedia tanpa kehilangan yang lain

Respons parsial dapat berisi lokasi dari sumber yang merespon sementara sumber lain gagal. Simpan hasil ini, atribusinya, dan peringatan terkait. Jangan tampilkan daftar sebagai lengkap dan jangan ganti bidang yang hilang dengan nilai default yang menyesatkan.

Informasi lama yang tersimpan di cache juga bisa berguna jika kebijakan Anda mengizinkan. Itu harus tetap diberi label sebagai lama. Waktu penerimaan permintaan Anda tidak memperbarui observasi asli.

## Menyesuaikan pesan dan tindak lanjut

| Situasi | Pesan untuk disesuaikan dengan antarmuka Anda | Tindakan |
| --- | --- | --- |
| empty | Tidak ada hasil yang dikembalikan dalam area ini dengan filter ini | Ubah area atau filternya |
| partial | Beberapa hasil tersedia; pencarian tidak lengkap | Tampilkan hasil dan peringatan |
| Error validasi | Pencarian mengandung parameter tidak valid | Perbaiki permintaan |
| Autentikasi atau hak | Akses ini tidak mengizinkan pencarian ini | Periksa akun atau token |
| Batas atau ketidaksediaan | Pencarian sementara tidak tersedia | Ikuti petunjuk tindak lanjut |

Untuk 429, cek petunjuk layanan dan Retry-After jika ada. Error 400 perlu koreksi argumen; mengulang permintaan yang sama tidak menyelesaikan. Jangan ubah 401 jadi panggilan anonim otomatis jika pengguna sudah memberi token.

[Referensi error API ROOTE](https://doc.roote.ai/roote-api/errors)

[Status layanan ROOTE](https://status.roote.ai/)

## Uji keempat status sebelum publish

Siapkan respons uji lengkap, kosong, parsial, error, JSON tidak valid, dan timeout. Periksa pesan yang ditampilkan, hasil yang disimpan, dan jumlah tindak lanjut. Tes utama adalah kerusakan tidak pernah menghasilkan klaim tidak adanya layanan.

[Terapkan aturan ini pada asisten AI](https://www.roote.ai/id/guides/cara-membuat-asisten-mobilitas-di-sekitar-alamat/)

[Memahami format data mobilitas](https://www.roote.ai/id/guides/gtfs-gtfs-rt-dan-gbfs-apa-perbedaannya/)

## Pertanyaan yang sering diajukan

### Apakah daftar kosong membuktikan tidak ada toilet?

Tidak. Itu hanya menunjukkan tidak ada hasil dikembalikan untuk pencarian dan sumber yang diperiksa.

### Bolehkah menampilkan jawaban parsial?

Boleh, jika entitas valid dan peringatan serta batas perlu dipertahankan.

### Haruskah ulangi setiap error?

Tidak. Perbaiki error parameter atau akses; batasi pengulangan untuk insiden sementara dan patuhi petunjuk layanan.
