Lỗi và cách khắc phục

Isochrones API trả về lỗi bằng định dạng JSON chuẩn của 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"
  }
}

Sử dụng trường status (hoặc HTTP code) để xử lý lỗi theo phương thức lập trình. Văn bản message dành cho nhà phát triển và có thể thay đổi, vì vậy, đừng phân tích cú pháp văn bản này.

Khi làm việc với Isochrones API, bạn có thể gặp phải các mã trạng thái lỗi phổ biến sau:

  • 400 INVALID_ARGUMENT: Yêu cầu chứa các tham số không hợp lệ hoặc cú pháp không đúng định dạng:
    • Giới hạn thời lượng: Đảm bảo travelDuration tối thiểu là "1s", kết thúc bằng "s" (chẳng hạn như "1800s") và không vượt quá giới hạn của chế độ: 3600s (60 phút) cho DRIVE và TWO_WHEELER, hoặc 7200s (120 phút) cho WALK và BICYCLE. Giá trị bằng 0 ("0s"), giá trị âm và giá trị dưới 1 giây (chẳng hạn như "0.5s") sẽ bị từ chối.
    • Lựa chọn ưu tiên về lưu lượng truy cập: Đảm bảo routingPreference không được đặt thành TRAFFIC_AWARE khi travelMode là WALK hoặc BICYCLE. Lưu lượng truy cập trực tiếp chỉ được hỗ trợ cho DRIVE và TWO_WHEELER.
    • Enum bắt buộc: Đảm bảo cả travelMode và travelDirection (FROM hoặc TO) đều được chỉ định và không được đặt thành *_UNSPECIFIED.
    • Toạ độ gốc (location): Đặt cả latitude (trong [-90, 90]) và longitude (trong [-180, 180]). Trường bị bỏ qua được coi là 0 mà không có lỗi: bỏ qua cả hai sẽ cho ra (0, 0), bị từ chối; chỉ bỏ qua latitude sẽ đặt gốc trên Đường xích đạo; và chỉ bỏ qua longitude sẽ đặt gốc trên kinh tuyến gốc.
    • Định dạng mã địa điểm (place): Đảm bảo place là mã địa điểm hoặc tên tài nguyên places/{place_id} (ví dụ: "places/ChIJIQBpAG2ahYAR_6128GcTUEo"), không có thêm phân đoạn đường dẫn và tham chiếu đến một mã địa điểm hợp lệ.
    • Mặt nạ trường (X-Goog-FieldMask): Nếu được cung cấp, tiêu đề phải tham chiếu đến các đường dẫn phản hồi hợp lệ như isochrone, isochrone.geoJson hoặc *.
    • Khoá API không hợp lệ (API_KEY_INVALID): Khoá API không đúng định dạng hoặc không được nhận dạng trong X-Goog-Api-Key hoặc ?key= sẽ trả về 400 INVALID_ARGUMENT kèm theo lý do API_KEY_INVALID.
  • 403 PERMISSION_DENIED: Không xác thực hoặc uỷ quyền được:
    • Không có thông tin xác thực (X-Goog-Api-Key, ?key= hoặc mã thông báo Authorization: Bearer) nào được cung cấp trong yêu cầu.
    • Isochrones API (isochrones.googleapis.com) chưa được bật trong dự án trên đám mây của bạn trên Google Cloud hoặc bạn chưa bật tính năng thanh toán.
    • Khoá API của bạn có các quy tắc hạn chế về mục tiêu API, địa chỉ IP hoặc liên kết giới thiệu HTTP, khiến các yêu cầu đến isochrones.googleapis.com bị chặn.
  • 404 NOT_FOUND: Không thể phân giải hoặc điều chỉnh điểm xuất phát cho khớp với mạng lưới đường:
    • Không thể phân giải place thành một vị trí. Kiểm tra để đảm bảo mã địa điểm là hợp lệ và mới nhất.
    • Tâm của điểm xuất phát location hoặc place nằm cách một đoạn đường phù hợp với phương thức di chuyển xa hơn khoảng cách bám dính tối đa (khoảng 200 mét hoặc ít hơn đối với WALK và BICYCLE). Hãy di chuyển toạ độ đến gần đường công cộng hơn hoặc truyền toạ độ lối vào đường thay vì mã địa điểm của một công viên hoặc địa danh lớn.
    • Toạ độ nằm trong một khu vực không có dữ liệu đường (chẳng hạn như đại dương).
  • 429 RESOURCE_EXHAUSTED: Dự án của bạn đã vượt quá hạn mức mỗi phút (mặc định là 300 yêu cầu mỗi phút):

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

    Điều tiết tỷ lệ yêu cầu của ứng dụng và thử lại các phản hồi 429 bằng cách sử dụng thuật toán thời gian đợi luỹ thừa có độ trễ ngẫu nhiên.

  • 503 UNAVAILABLE: Dịch vụ tạm thời không hoạt động hoặc bị quá tải. Thử lại yêu cầu bằng thuật toán thời gian đợi luỹ thừa.

  • 500 INTERNAL: Đã xảy ra lỗi phía máy chủ nội bộ, chẳng hạn như hết thời gian chờ của phần phụ trợ. Thử yêu cầu lại bằng thuật toán thời gian đợi luỹ thừa.