Isochrones API возвращает ошибки в стандартном формате 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"
}
}
Чтобы обрабатывать ошибки программно, используйте поле status (или HTTP code). Текст message предназначен для разработчиков и может меняться, поэтому не анализируйте его.
При работе с Isochrones API вы можете столкнуться со следующими распространенными кодами статуса ошибки:
400 INVALID_ARGUMENT. Запрос содержит недопустимые параметры или синтаксические ошибки.- Ограничения по продолжительности. Убедитесь, что значение
travelDurationне меньше"1s", заканчивается на"s"(например,"1800s") и не превышает ограничение для режима:3600s(60 минут) дляDRIVEиTWO_WHEELERили7200s(120 минут) дляWALKиBICYCLE. Нулевые ("0s"), отрицательные и дробные значения меньше одной секунды (например,"0.5s") не принимаются. - Предпочтительный трафик. Убедитесь, что для параметра
routingPreferenceне задано значениеTRAFFIC_AWARE, если для параметраtravelModeзадано значениеWALKилиBICYCLE. Информация о загруженности дорог поддерживается только дляDRIVEиTWO_WHEELER. - Обязательные перечисления. Убедитесь, что указаны оба перечисления –
travelModeиtravelDirection(FROMилиTO) – и для них не задано значение*_UNSPECIFIED. - Координаты пункта отправления (
location). Задайтеlatitude(в[-90, 90]) иlongitude(в[-180, 180]). Если поле не заполнено, оно обрабатывается как0без ошибки. Если не заполнены оба поля, возвращается значение(0, 0), которое отклоняется. Если не заполнено только полеlatitude, пункт отправления помещается на экватор, а если только полеlongitude– на нулевой меридиан. - Формат идентификатора места (
place). Убедитесь, чтоplace– это идентификатор места или название ресурсаplaces/{place_id}(например,"places/ChIJIQBpAG2ahYAR_6128GcTUEo") без дополнительных сегментов пути и что он ссылается на действительный идентификатор места. - Маска поля (
X-Goog-FieldMask). Если она указана, заголовок должен ссылаться на действительные пути ответа, такие какisochrone,isochrone.geoJsonили*. - Недопустимый ключ API (
API_KEY_INVALID). Неправильно сформированный или нераспознанный ключ API вX-Goog-Api-Keyили?key=возвращает400 INVALID_ARGUMENTс причинойAPI_KEY_INVALID.
- Ограничения по продолжительности. Убедитесь, что значение
403 PERMISSION_DENIED: ошибка аутентификации или авторизации.- В запросе не указаны учетные данные (токен
X-Goog-Api-Key,?key=илиAuthorization: Bearer). - Isochrones API (
isochrones.googleapis.com) не включен в вашем облачном проекте Google Cloud или для него не включены платежи. - Ваш ключ API имеет ограничения по целевому API, IP-адресу или заголовку HTTP referer, которые блокируют запросы к
isochrones.googleapis.com.
- В запросе не указаны учетные данные (токен
404 NOT_FOUND: не удалось определить пункт отправления или привязать его к дорожной сети.- Не удалось определить местоположение по значению
place. Проверьте, действителен ли идентификатор места. - Центроид пункта отправления
locationили пункта назначенияplaceнаходится дальше от сегмента дороги, совместимого с режимом, чем максимальное расстояние привязки (около 200 метров или меньше дляWALKиBICYCLE). Переместите координату ближе к дороге общего пользования или передайте координаты въезда на дорогу вместо идентификатора места большого парка или достопримечательности. - Координаты указывают на область, где нет дорог (например, в океане).
- Не удалось определить местоположение по значению
429 RESOURCE_EXHAUSTED: в вашем проекте превышена квота на количество запросов в минуту (по умолчанию 300).{ "error": { "code": 429, "message": "Quota exceeded for quota metric 'Requests' and limit 'Requests per minute' of service 'isochrones.googleapis.com'.", "status": "RESOURCE_EXHAUSTED" } }Ограничьте частоту запросов клиента и повторите попытку отправки ответов
429, используя экспоненциальную выдержку со случайным дрожанием.503 UNAVAILABLE: сервис временно недоступен или перегружен. Повторите запрос, используя экспоненциальную выдержку.500 INTERNAL– произошла внутренняя ошибка сервера, например истекло время ожидания ответа от серверной части. Повторите запрос, используя экспоненциальную выдержку.