ข้อผิดพลาดและการแก้ปัญหา

Isochrones API จะแสดงข้อผิดพลาดโดยใช้รูปแบบ JSON มาตรฐานของ 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"
  }
}

ใช้ช่อง status (หรือ HTTP code) เพื่อจัดการข้อผิดพลาดแบบเป็นโปรแกรม ข้อความ message มีไว้สำหรับนักพัฒนาแอปและอาจมีการเปลี่ยนแปลง ดังนั้นอย่าแยกวิเคราะห์

เมื่อทำงานกับ Isochrones API คุณอาจพบรหัสสถานะข้อผิดพลาดที่พบบ่อยต่อไปนี้

  • 400 INVALID_ARGUMENT: คำขอมีพารามิเตอร์ที่ไม่ถูกต้องหรือไวยากรณ์ที่ผิดรูปแบบ
    • ขอบเขตระยะเวลา: ตรวจสอบว่า travelDuration มีค่าอย่างน้อย "1s" ลงท้ายด้วย "s" (เช่น "1800s") และไม่เกินขีดจำกัดของโหมด ซึ่งก็คือ 3600s (60 นาที) สำหรับ DRIVE และ TWO_WHEELER หรือ 7200s (120 นาที) สำหรับ WALK และ BICYCLE ระบบจะปฏิเสธค่าที่เป็น 0 ("0s") ค่าลบ และค่าที่ต่ำกว่า 1 วินาที (เช่น "0.5s")
    • ค่ากำหนดการเข้าชม: ตรวจสอบว่าไม่ได้ตั้งค่า routingPreference เป็น TRAFFIC_AWARE เมื่อ travelMode เป็น WALK หรือ BICYCLE การเข้าชมแบบไลฟ์สดรองรับเฉพาะ DRIVE และ TWO_WHEELER เท่านั้น
    • Enum ที่จำเป็น: ตรวจสอบว่าได้ระบุทั้ง travelMode และ travelDirection (FROM หรือ TO) และไม่ได้ตั้งค่าเป็น *_UNSPECIFIED
    • พิกัดต้นทาง (location): ตั้งค่าทั้ง latitude (เป็น[-90, 90]) และ longitude (เป็น [-180, 180]) ระบบจะถือว่าช่องที่ละเว้นเป็น 0 โดยไม่มีข้อผิดพลาด การละเว้นทั้ง 2 ช่องจะทำให้ได้ (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 ที่บล็อกคำขอไปยัง 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 อีกครั้งโดยใช้ Exponential Backoff ที่มีความผันผวนแบบสุ่ม

  • 503 UNAVAILABLE: บริการไม่พร้อมใช้งานชั่วคราวหรือมีภาระงานมากเกินไป ลองส่งคำขออีกครั้งโดยใช้ Exponential Backoff

  • 500 INTERNAL: เกิดข้อผิดพลาดภายในเซิร์ฟเวอร์ เช่น แบ็กเอนด์หมดเวลา ลองส่งคำขออีกครั้งโดยใช้ Exponential Backoff