# Nėra rezultato ar API klaida: kaip atskirti?

> Atpažinkite tuščią rezultatą, dalinę atsakymą ir ROOTE API klaidas. Patikrinkite koordinates, filtrus, aprėptį ir ribas tinkamam pranešimui rodyti.

Source: https://www.roote.ai/lt/guides/nera-rezultatu-ar-api-klaida-kaip-atskirti/
Language: lt
Author: ROOTE

API be rezultato ir API su klaida reikalauja skirtingo apdorojimo. Sėkminga paieška gali negrąžinti jokių objektų nurodytame rajone. Priešingai, tinklo klaida, pasiekti apribojimai ar nepasiekiamas šaltinis neleidžia padaryti išvados iš paieškos.

ROOTE atveju pirmiausia patikrinkite HTTP atsakymą, tada verslo statusą, laukiamą kolekciją ir aprėptį. Šis metodas padeda išvengti „nėra tualetų“ rodymo, jei Serviso kvietimas nepavyko, arba „nėra sustojimų“ po per ilgo laukimo.

## Perskaitykite tris atsakymo lygius

| Lygmuo | Patikrinti | Galimas išvada |
| --- | --- | --- |
| Transportas | Ryšys, laukimo laikas ir HTTP statusas | Ar užklausa įvykdyta sėkmingai? |
| Sutartis | Galiojantis JSON, versija ir laukiamų laukų buvimas | Ar atsakymas gali būti panaudotas? |
| Verslo rezultatas | status, kolekcijos, aprėptis, įspėjimai ir meta duomenys | Ką žinome prašytame aprėptyje? |

HTTP 200 kodas nepakanka, kad paieška būtų patvirtinta. Atsakyme gali būti nurodyta dalinė vykdymo sėkmė arba klaidos statusas. Priešingai, 404 klaida maršrute nėra įprastas būdas išreikšti tuščią kolekciją: patikrinkite URL ir sutartį.

## Suprasti success, empty, partial ir error

| Statusas | Rekomenduojamas apdorojimas |
| --- | --- |
| success | Rodyti objektus po patvirtinimo ir išlaikyti ribas |
| empty | Nurodyti, kad paieška negrąžino jokių rezultatų |
| partial | Rodyti panaudojamą informaciją su įspėjimais |
| error | Rodyti paiešką kaip neprieinamą; nepadaryti išvados apie objektų nebuvimą |

Rezultatų nebuvimas taikomas žinomai užklausai ir šaltiniams. Tai neįrodo, kad paslaugos fiziškai neegzistuoja. Nepilna aprėptis, siauras filtras ar taikomi apribojimai gali sumažinti rezultatus.

## Sprendimų medis jūsų sąsajai

```
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.
```

## Patikrinkite parametrus tinkama tvarka

Pirmiausia patikrinkite platumą ir ilgumą, jų seką ir gautą miestą. Po to patikrinkite spindulio vienetą ir filtrų žodyną. API Services naudoja types=toilets; žemėlapio URL naudoja modes=toilets. Šie parametrai priklauso skirtingoms sutarčių sistemoms.

Tada išplėskite po vieną dimensiją: padidinkite spindulį maršruto ribose arba pašalinkite filtrą aiškiam testui. Išsaugokite pradinės užklausos pėdsaką. Jei automatiškai išplečiate, informuokite vartotoją apie naują aprėptį.

[Sukurkite API paiešką aplink GPS koordinates](https://www.roote.ai/lt/guides/kaip-ieskoti-apylinkes-transporto-stoteliu-su-api/)

## Tvarkykite nepasiekiamą šaltinį neprarandant kitų

Dalinė ataskaita gali apimti objektus iš atsakusių šaltinių, kai kitas nepavyko. Išlaikykite šiuos rezultatus, jų autorystę ir atitinkamą įspėjimą. Neneikite, kad sąrašas yra išsamus ir nepakeiskite trūkstamų laukų apgaulingais numatytaisiais duomenimis.

Sena informacija, saugoma talpykloje, taip pat gali būti naudinga, jei jūsų politika leidžia šią atsarginę galimybę. Ji turi likti pažymėta kaip sena. Jūsų užklausos gavimo laikas nepakeičia pradinio stebėjimo datos.

## Priderinkite pranešimus ir išlyginimus

| Situacija | Pranešimas jūsų sąsajai | Veiksmas |
| --- | --- | --- |
| empty | Šioje teritorijoje su tais filtrais grąžinti rezultatai nerasti | Pakeiskite teritoriją arba filtrus |
| partial | Kai kurie rezultatai yra; paieška nepilna | Rodyti rezultatus ir įspėjimą |
| Validacijos klaida | Paieškoje yra neleistinas parametras | Pataisykite užklausą |
| Autentifikacija arba teisės | Šis prieigos raktas neleidžia atlikti šios paieškos | Patikrinkite paskyrą arba žetoną |
| Ribojimas arba neprieinamumas | Paieška laikinai neprieinama | Laikykitės atkūrimo gairių |

429 klaidos atveju pasitikrinkite paslaugos instrukcijas ir galimą Retry-After laikotarpį. 400 klaida reikalauja argumentų pataisos; ta pati užklausa kartoti nepadeda. Nenukreipkite 401 klaidos į automatinį anoniminį kvietimą, jei vartotojas pateikė žetoną.

[ROOTE API klaidų kodų sąrašas](https://doc.roote.ai/roote-api/errors)

[ROOTE paslaugų būklė](https://status.roote.ai/)

## Patikrinkite keturias būsenas prieš publikuojant

Paruoškite testinius pilnus, tuščius, dalinius ir klaidų atsakymus, taip pat negaliojantį JSON ir timeout’ą. Patikrinkite rodomą pranešimą, išsaugotus rezultatus ir pritaikytų atkūrimo bandymų skaičių. Pagrindinis testas: klaidos neturi lemti paslaugų nebuvimo teiginio.

[Taikykite šias taisykles dirbtinio intelekto asistentui](https://www.roote.ai/lt/guides/kaip-sukurti-asistente-randanti-mobiluma-aplink-adresa/)

[Supraskite mobilumo duomenų formatus](https://www.roote.ai/lt/guides/gtfs-gtfs-rt-ir-gbfs-kokie-skirtingumai/)

## Dažniausiai užduodami klausimai

### Ar tuščias sąrašas įrodo tualetų nebuvimą?

Ne. Tai tik rodo, kad paieška ir naudotos duomenų šaltiniai negrąžino rezultatų.

### Ar galima rodyti dalinį atsakymą?

Taip, jei panaudojami objektai yra galiojantys ir išlaikomi reikalingi įspėjimai bei ribojimai.

### Ar reikia kartoti kiekvieną klaidą?

Ne. Pataisykite parametrų ar prieigos klaidas; apribokite pakartojimus laikiniems incidentams ir laikykitės paslaugos gairių.
