ส่วนต่าง ๆ ต่อไปนี้จะอธิบายถึงการจัดการข้อผิดพลาดสำหรับ Open Cloud APIs เนื่องจากมีความแตกต่างในการดำเนินการข้าม endpoints และชั้นการตรวจสอบ ข้อความตอบกลับข้อผิดพลาดอาจแตกต่างกันอย่างมากในรูปแบบ
ข้อผิดพลาดเกตเวย์
สำหรับปัญหาเกี่ยวกับการรับรองความถูกต้องหรือการส่งต่อ API ทั้งแบบ Open Cloud v1 และ v2 อาจส่งคืนข้อผิดพลาดในรูปแบบนี้:
ข้อผิดพลาดเกตเวย์ตัวอย่าง
{
"errors": [
{
"code": 0,
"message": "คีย์ API ไม่ถูกต้อง"
}
]
}
Open Cloud v2
Open Cloud v2 APIs มักจะมีรูปแบบข้อผิดพลาดที่สอดคล้องกันเมื่อข้อผิดพลาดเกิดขึ้นภายใน endpoint ของ API เอง
รูปแบบข้อผิดพลาดมาตรฐาน v2
Open Cloud v2 APIs ส่งคืนข้อผิดพลาดในรูปแบบนี้:
- code - สตริงที่แสดงถึงประเภทข้อผิดพลาด (เช่น INVALID_ARGUMENT, NOT_FOUND).
- message - ข้อความที่เข้าใจได้ของผู้ใช้ที่อธิบายข้อผิดพลาด
- details - อาร์เรย์ที่ไม่บังคับซึ่งประกอบด้วยข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาด
ข้อผิดพลาด v2 ตัวอย่าง
{
"code": "INVALID_ARGUMENT",
"message": "หมายเลขประจำตัวผู้ใช้ในคำขอไม่ถูกต้อง."
}
ข้อผิดพลาด v2 ตัวอย่างพร้อมรายละเอียด
{
"code": "INVALID_ARGUMENT",
"message": "ตัวกรองที่ให้มาไม่ถูกต้อง.",
"details": [
{
...
}
]
}
รหัสข้อผิดพลาด v2
ตารางต่อไปนี้อธิบายค่าที่เป็นไปได้สำหรับ code ในคำตอบของ API v2
| รหัส | สถานะ HTTP | คำอธิบาย |
|---|---|---|
| INVALID_ARGUMENT | 400 | คุณส่งพารามิเตอร์ที่ไม่ถูกต้อง เช่น universeId ที่ไม่ถูกต้อง คุณอาจมีหัวข้อที่หายไปหรือไม่ถูกต้องเช่น Content-Length และ Content-Type. |
| PERMISSION_DENIED | 403 | คำขอของคุณไม่มีสิทธิ์หรือขอบเขตที่เพียงพอในการดำเนินการนี้. |
| NOT_FOUND | 404 | ระบบไม่สามารถหาทรัพยากรที่คุณระบุได้ เช่น รายการในร้านข้อมูล. |
| ABORTED | 409 | การดำเนินการถูกยกเลิก. |
| RESOURCE_EXHAUSTED | 429 | คุณไม่มีโควต้าที่เพียงพอในการดำเนินการ โดยทั่วไปแล้วเกิดจากการส่งคำขอจำนวนมากเกินไป. |
| CANCELLED | 499 | ระบบยุติคำขอ โดยทั่วไปเกิดจากการหมดเวลาโดยฝั่งลูกค้า. |
| INTERNAL | 500 | ข้อผิดพลาดภายในเซิร์ฟเวอร์ โดยทั่วไปเกิดจากข้อบกพร่องของเซิร์ฟเวอร์. |
| NOT_IMPLEMENTED | 501 | เซิร์ฟเวอร์ไม่ได้ดำเนินการวิธีการ API. |
| UNAVAILABLE | 503 | บริการไม่พร้อมใช้งาน โดยทั่วไปจะถูกส่งคืนเมื่อเซิร์ฟเวอร์ไม่ทำงาน. |
Open Cloud v1
Open Cloud v1 APIs มีรูปแบบการตอบกลับข้อผิดพลาดที่ไม่สอดคล้องกัน รูปแบบขึ้นอยู่กับ endpoint ที่เฉพาะเจาะจง ประเภทของข้อผิดพลาด และที่ที่ข้อผิดพลาดเกิดขึ้นในกระบวนการประมวลผลคำขอ
ส่วนใหญ่ของ v1 endpoints จะส่งคืนข้อผิดพลาดในหนึ่งในสามรูปแบบนี้:
ข้อผิดพลาด v1 ตัวอย่างพร้อมฟิลด์ข้อผิดพลาด
{
"error": "INVALID_ARGUMENT",
"message": "ตัวชี้วัดไม่ถูกต้อง.",
"errorDetails": [
{
"errorDetailType": "DatastoreErrorInfo",
"datastoreErrorCode": "InvalidCursor"
}
]
}
ข้อผิดพลาด v1 ตัวอย่างพร้อมฟิลด์รหัส
{
"code": "INVALID_ARGUMENT",
"message": "ตัวชี้วัดไม่ถูกต้อง."
}
ข้อผิดพลาดการตรวจสอบที่ละเอียด v1 ตัวอย่าง
{
"errors": {
"assetId": ["ค่า 'a' ไม่ถูกต้อง."]
},
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "เกิดข้อผิดพลาดในการตรวจสอบหนึ่งหรือหลายข้อ.",
"status": 400,
"extensions": {
"traceId": "00-427917f0fc3b8375ee33e4603a7f0693-f3f6ad560ff1a122-00"
}
}
รหัสข้อผิดพลาด v1
ตารางต่อไปนี้อธิบายค่าที่เป็นไปได้สำหรับ error หรือ code ในคำตอบของ API v1:
| รหัสสถานะ HTTP | ข้อผิดพลาด | คำอธิบาย |
|---|---|---|
| 400 | INVALID_ARGUMENT | คุณส่งพารามิเตอร์ที่ไม่ถูกต้อง เช่น universeId ที่ไม่ถูกต้อง คุณอาจมีหัวข้อที่หายไปหรือไม่ถูกต้องเช่น Content-Length และ Content-Type. |
| 403 | INSUFFICIENT_SCOPE | คำขอต้องการสิทธิ์ที่สูงกว่าที่จัดให้โดยโทเค็นการเข้าถึง. |
| 403 | PERMISSION_DENIED | คำขอของคุณไม่มีขอบเขตที่เพียงพอในการดำเนินการนี้. |
| 404 | NOT_FOUND | ระบบไม่สามารถหาทรัพยากรที่คุณระบุได้ เช่น ร้านข้อมูล. |
| 409 | ABORTED | การดำเนินการถูกยกเลิกเนื่องจากความขัดแย้ง เช่น การเผยแพร่สถานที่ที่ไม่เป็นส่วนหนึ่งของจักรวาล. |
| 429 | RESOURCE_EXHAUSTED | คุณไม่มีโควต้าที่เพียงพอในการดำเนินการ โดยทั่วไปเกิดจากการส่งคำขอจำนวนมากเกินไป. |
| 499 | CANCELLED | ระบบยุติคำขอ โดยทั่วไปเกิดจากการหมดเวลาโดยฝั่งลูกค้า. |
| 500 | INTERNAL | ข้อผิดพลาดภายในเซิร์ฟเวอร์ โดยทั่วไปเป็นข้อบกพร่องของเซิร์ฟเวอร์. |
| 501 | NOT_IMPLEMENTED | เซิร์ฟเวอร์ไม่ได้ดำเนินการวิธีการ API. |
| 503 | UNAVAILABLE | บริการไม่พร้อมใช้งาน โดยทั่วไปเซิร์ฟเวอร์ไม่ทำงาน. |