Hatalar ve sorun giderme

Isochrones API, standart Google Cloud google.rpc.Status JSON biçimini kullanarak hataları döndürür:

{
  "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"
  }
}

Hataları programatik olarak işlemek için status (veya HTTP code) alanını kullanın. message metni geliştiriciler için tasarlanmıştır ve değişebilir. Bu nedenle ayrıştırmayın.

Isochrones API ile çalışırken aşağıdaki yaygın hata durum kodlarıyla karşılaşabilirsiniz:

  • 400 INVALID_ARGUMENT: İstek, geçersiz parametreler veya hatalı biçimlendirilmiş söz dizimi içeriyor:
    • Süre sınırları: travelDuration değerinin en az "1s" olduğundan, "s" ile bittiğinden (ör. "1800s") ve mod sınırını aşmadığından emin olun: DRIVE ve TWO_WHEELER için 3600s (60 dakika) veya WALK ve BICYCLE için 7200s (120 dakika). Sıfır ("0s"), negatif değerler ve 1 saniyenin altındaki saniye altı değerler (ör. "0.5s") reddedilir.
    • Trafik tercihi: travelMode, WALK veya BICYCLE olduğunda routingPreference değerinin TRAFFIC_AWARE olarak ayarlanmadığından emin olun. Canlı trafik yalnızca DRIVE ve TWO_WHEELER için desteklenir.
    • Zorunlu enum'lar: Hem travelMode hem de travelDirection'nin (FROM veya TO) belirtildiğinden ve *_UNSPECIFIED olarak ayarlanmadığından emin olun.
    • Başlangıç koordinatları (location): Hem latitude ([-90, 90] cinsinden) hem de longitude ([-180, 180] cinsinden) değerlerini ayarlayın. Atlanan bir alan, hata olmadan 0 olarak değerlendirilir: Her ikisinin de atlanması, reddedilen (0, 0) değerini verir; yalnızca latitude değerinin atlanması başlangıç noktasını Ekvator'a, yalnızca longitude değerinin atlanması ise başlangıç meridyenine yerleştirir.
    • Yer kimliği biçimi (place): place değerinin bir yer kimliği veya places/{place_id} kaynak adı (ör. "places/ChIJIQBpAG2ahYAR_6128GcTUEo") olduğundan, ek yol segmentleri içermediğinden ve geçerli bir yer kimliğine başvurduğundan emin olun.
    • Alan maskesi (X-Goog-FieldMask): Sağlanırsa başlık, isochrone, isochrone.geoJson veya * gibi geçerli yanıt yollarına referans vermelidir.
    • Geçersiz API anahtarı (API_KEY_INVALID): X-Goog-Api-Key veya ?key= içinde hatalı biçimlendirilmiş ya da tanınmayan bir API anahtarı, API_KEY_INVALID nedeniyle 400 INVALID_ARGUMENT döndürür.
  • 403 PERMISSION_DENIED: Kimlik doğrulama veya yetkilendirme başarısız oldu:
    • İstekte kimlik doğrulama bilgileri (X-Goog-Api-Key, ?key= veya Authorization: Bearer jetonu) sağlanmadı.
    • Isochrones API (isochrones.googleapis.com) Google Cloud projenizde etkinleştirilmemiş veya faturalandırma etkinleştirilmemiş.
    • API anahtarınızda, isochrones.googleapis.com için istekleri engelleyen API hedefi, IP adresi veya HTTP yönlendiren kısıtlamaları var.
  • 404 NOT_FOUND: Başlangıç noktası çözümlenemedi veya yol ağına tutturulamadı:
    • place bir konumla eşleştirilemedi. Yer kimliğinin geçerli ve güncel olup olmadığını kontrol edin.
    • Başlangıç noktası location veya place ağırlık merkezi, modla uyumlu bir yol segmentine maksimum yakalama mesafesinden (yaklaşık 200 metre veya WALK ve BICYCLE için daha az) daha uzakta. Koordinatı bir devlet yoluna yaklaştırın veya büyük bir park ya da önemli yer kimliği yerine yol girişi koordinatlarını iletin.
    • Koordinat, yol verisi olmayan bir alandadır (ör. açık okyanus).
  • 429 RESOURCE_EXHAUSTED: Projeniz, dakika başına kota sınırını (varsayılan olarak dakikada 300 istek) aştı:

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

    İstemci istek hızlarını kısıtlayın ve rastgele gecikme ile eksponansiyel geri yükleme kullanarak 429 yanıtlarını yeniden deneyin.

  • 503 UNAVAILABLE: Hizmet geçici olarak kullanılamıyor veya aşırı yüklü. Eksponansiyel geri yükleme kullanarak isteği yeniden deneyin.

  • 500 INTERNAL: Arka uç zaman aşımı gibi dahili bir sunucu hatası oluştu. Eksponansiyel geri yükleme kullanarak isteği yeniden deneyin.