Błędy i rozwiązywanie problemów

Interfejs Isochrones API zwraca błędy w standardowym formacie JSON google.rpc.Status Google Cloud:

{
  "error": {
    "code": 400,
    "message": "Violation in GenerateIsochroneRequest.travel_duration: travel_duration must be at least 1 second and not exceed 3600 seconds (60 minutes) for DRIVE or TWO_WHEELER mode or 7200 seconds (120 minutes) for other modes",
    "status": "INVALID_ARGUMENT"
  }
}

Aby obsługiwać błędy automatycznie, użyj pola status (lub HTTP code). Tekst message jest przeznaczony dla deweloperów i może ulec zmianie, więc nie należy go analizować.

Podczas pracy z interfejsem Isochrones API możesz napotkać te typowe kody stanu błędów:

  • 400 INVALID_ARGUMENT: żądanie zawiera nieprawidłowe parametry lub nieprawidłową składnię:
    • Limity czasu trwania: upewnij się, że wartość travelDuration wynosi co najmniej "1s", kończy się na "s" (np. "1800s") i nie przekracza limitu trybu: 3600s (60 minut) w przypadku DRIVE i TWO_WHEELER lub 7200s (120 minut) w przypadku WALK i BICYCLE. Wartości zerowe ("0s"), ujemne i mniejsze niż 1 sekunda (np. "0.5s") są odrzucane.
    • Ustawienie ruchu: upewnij się, że parametr routingPreference nie jest ustawiony na TRAFFIC_AWARE, gdy parametr travelMode ma wartość WALK lub BICYCLE. Ruch na żywo jest obsługiwany tylko w przypadku DRIVE i TWO_WHEELER.
    • Wymagane typy wyliczeniowe: upewnij się, że określono zarówno travelMode, jak i travelDirection (FROM lub TO) i że nie są one ustawione na *_UNSPECIFIED.
    • Współrzędne punktu początkowego (location): ustaw latitude (w [-90, 90]) i longitude (w [-180, 180]). Pominięte pole jest traktowane jako 0 bez błędu: pominięcie obu daje (0, 0), co jest odrzucane; pominięcie tylko latitude umieszcza punkt początkowy na równiku, a pominięcie tylko longitude umieszcza go na południku zerowym.
    • Format identyfikatora miejsca (place): upewnij się, że place to identyfikator miejsca lub nazwa zasobu places/{place_id} (np. "places/ChIJIQBpAG2ahYAR_6128GcTUEo") bez dodatkowych segmentów ścieżki i że odnosi się do prawidłowego identyfikatora miejsca.
    • Maska pola (X-Goog-FieldMask): jeśli jest podana, nagłówek musi odwoływać się do prawidłowych ścieżek odpowiedzi, takich jak isochrone, isochrone.geoJson lub *.
    • Invalid API key (API_KEY_INVALID): nieprawidłowo sformatowany lub nierozpoznany klucz interfejsu API w X-Goog-Api-Key lub ?key= zwraca 400 INVALID_ARGUMENT z przyczyną API_KEY_INVALID.
  • 403 PERMISSION_DENIED: nie udało się przeprowadzić uwierzytelniania lub autoryzacji:
    • W żądaniu nie podano danych uwierzytelniających (X-Goog-Api-Key, ?key= ani tokena Authorization: Bearer).
    • Isochrones API (isochrones.googleapis.com) nie jest włączony w projekcie Google Cloud lub nie są włączone płatności.
    • Klucz interfejsu API ma ograniczenia dotyczące celu interfejsu API, adresu IP lub strony odsyłającej HTTP, które blokują żądania do isochrones.googleapis.com.
  • 404 NOT_FOUND: nie udało się rozpoznać miejsca początkowego lub przyciągnąć go do sieci dróg:
    • Nie udało się ustalić lokalizacji na podstawie tych danych: place. Sprawdź, czy identyfikator miejsca jest prawidłowy i aktualny.
    • Punkt początkowy location lub środek ciężkości place znajduje się dalej od segmentu drogi zgodnego z trybem niż maksymalna odległość przyciągania (około 200 metrów lub mniej w przypadku WALK i BICYCLE). Przesuń współrzędne bliżej drogi publicznej lub podaj współrzędne wjazdu na drogę zamiast identyfikatora miejsca dużego parku lub punktu orientacyjnego.
    • Współrzędne znajdują się na obszarze bez danych o drogach (np. na otwartym oceanie).
  • 429 RESOURCE_EXHAUSTED: Twój projekt przekroczył limit na minutę (domyślnie 300 żądań na minutę):

    {
      "error": {
        "code": 429,
        "message": "Quota exceeded for quota metric 'Requests' and limit 'Requests per minute' of service 'isochrones.googleapis.com'.",
        "status": "RESOURCE_EXHAUSTED"
      }
    }
    

    Ogranicz częstotliwość żądań klientów i ponawiaj próby odpowiedzi 429, stosując wzrastający czas do ponowienia z losowym jitterem.

  • 503 UNAVAILABLE: usługa jest tymczasowo niedostępna lub przeciążona. Ponów żądanie, stosując wzrastający czas do ponowienia.

  • 500 INTERNAL: wystąpił wewnętrzny błąd serwera, np. przekroczenie limitu czasu backendu. Ponów żądanie, stosując wzrastający czas do ponowienia.