Errori e risoluzione dei problemi

L'API Isochrones restituisce gli errori utilizzando il formato JSON standard di Google Cloud google.rpc.Status:

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

Utilizza il campo status (o HTTP code) per gestire gli errori in modo programmatico. Il testo message è destinato agli sviluppatori e potrebbe cambiare, quindi non analizzarlo.

Quando utilizzi l'API Isochrones, potresti riscontrare i seguenti codici di stato di errore comuni:

  • 400 INVALID_ARGUMENT: la richiesta contiene parametri non validi o una sintassi non corretta:
    • Limiti di durata: assicurati che travelDuration sia almeno "1s", termini con "s" (ad esempio "1800s") e non superi il limite della modalità: 3600s (60 minuti) per DRIVE e TWO_WHEELER o 7200s (120 minuti) per WALK e BICYCLE. Zero ("0s"), i valori negativi e i valori inferiori a 1 secondo (ad esempio "0.5s") vengono rifiutati.
    • Preferenza di traffico: assicurati che routingPreference non sia impostato su TRAFFIC_AWARE quando travelMode è WALK o BICYCLE. Il traffico in tempo reale è supportato solo per DRIVE e TWO_WHEELER.
    • Enum obbligatori: assicurati che siano specificati sia travelMode sia travelDirection (FROM o TO) e che non siano impostati su *_UNSPECIFIED.
    • Coordinate di origine (location): imposta sia latitude (in [-90, 90]) sia longitude (in [-180, 180]). Un campo omesso viene trattato come 0 senza errori: l'omissione di entrambi restituisce (0, 0), che viene rifiutato; l'omissione di latitude posiziona l'origine sull'Equatore; l'omissione di longitude la posiziona sul meridiano di Greenwich.
    • Formato dell'ID luogo (place): assicurati che place sia un ID luogo o un nome della risorsa places/{place_id} (ad esempio "places/ChIJIQBpAG2ahYAR_6128GcTUEo"), senza segmenti di percorso aggiuntivi, e che faccia riferimento a un ID luogo valido.
    • Maschera di campo (X-Goog-FieldMask): se fornita, l'intestazione deve fare riferimento a percorsi di risposta validi come isochrone, isochrone.geoJson o *.
    • Chiave API non valida (API_KEY_INVALID): una chiave API non corretta o non riconosciuta in X-Goog-Api-Key o ?key= restituisce 400 INVALID_ARGUMENT con motivo API_KEY_INVALID.
  • 403 PERMISSION_DENIED: autenticazione o autorizzazione non riuscita:
    • Nella richiesta non sono state fornite credenziali di autenticazione (token X-Goog-Api-Key, ?key= o Authorization: Bearer).
    • thought L'API Isochrones (isochrones.googleapis.com) non è abilitata nel tuo progetto Google Cloud o la fatturazione non è abilitata.
    • La tua chiave API ha limitazioni relative alla destinazione dell'API, all'indirizzo IP o al referrer HTTP che bloccano le richieste a isochrones.googleapis.com.
  • 404 NOT_FOUND: non è stato possibile risolvere l'origine o agganciarla alla rete stradale:
    • Impossibile risolvere place in una località. Verifica che l'ID luogo sia valido e aggiornato.
    • Il baricentro dell'origine location o place si trova più lontano da un segmento stradale compatibile con la modalità rispetto alla distanza massima di aggancio (circa 200 metri o meno per WALK e BICYCLE). Sposta la coordinata più vicino a una strada pubblica o passa le coordinate di ingresso della strada anziché un ID luogo di un grande parco o di un punto di riferimento.
    • La coordinata si trova in un'area senza dati stradali (ad esempio in mare aperto).
  • 429 RESOURCE_EXHAUSTED: il tuo progetto ha superato il limite di quota al minuto (per impostazione predefinita, 300 richieste al minuto):

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

    Limita i tassi di richieste dei client e riprova le risposte 429 utilizzando il backoff esponenziale con jitter randomizzato.

  • 503 UNAVAILABLE: il servizio è temporaneamente non disponibile o sovraccarico. Riprova a effettuare la richiesta utilizzando il backoff esponenziale.

  • 500 INTERNAL: si è verificato un errore interno del server, ad esempio un timeout del backend. Riprova a effettuare la richiesta utilizzando il backoff esponenziale.