ดัชนี
BadRequest(ข้อความ)BadRequest.FieldViolation(ข้อความ)Code(enum)ErrorInfo(ข้อความ)Help(ข้อความ)Help.Link(ข้อความ)LocalizedMessage(ข้อความ)RequestInfo(ข้อความ)Status(ข้อความ)
BadRequest
อธิบายการละเมิดในคำขอของไคลเอ็นต์ ข้อผิดพลาดประเภทนี้มุ่งเน้นที่ด้านไวยากรณ์ของคำขอ
| ช่อง | |
|---|---|
field_violations[] |
อธิบายการละเมิดทั้งหมดในคำขอของไคลเอ็นต์ |
FieldViolation
ประเภทข้อความที่ใช้เพื่ออธิบายฟิลด์คำขอที่ไม่ถูกต้องรายการเดียว
| ช่อง | |
|---|---|
field |
เส้นทางที่นำไปยังฟิลด์ในเนื้อหาคำขอ ค่าจะเป็นลำดับของตัวระบุที่คั่นด้วยจุดซึ่งระบุฟิลด์ Protocol Buffer ลองพิจารณาสิ่งเหล่านี้ ในตัวอย่างนี้
ใน JSON ค่าเดียวกันจะแสดงเป็น
|
description |
คำอธิบายว่าเหตุใดองค์ประกอบคำขอจึงไม่ถูกต้อง |
reason |
เหตุผลของข้อผิดพลาดระดับฟิลด์ นี่คือค่าคงที่ที่ระบุสาเหตุที่ใกล้ที่สุดของข้อผิดพลาดระดับฟิลด์ โดยควรระบุประเภท FieldViolation ภายในขอบเขตของ google.rpc.ErrorInfo.domain โดยไม่ซ้ำกัน ควรมีอักขระไม่เกิน 63 ตัวและตรงกับนิพจน์ทั่วไปของ |
localized_message |
แสดงข้อความแสดงข้อผิดพลาดที่แปลเป็นภาษาท้องถิ่นสำหรับข้อผิดพลาดระดับฟิลด์ซึ่งส่งคืนให้ผู้ใช้ API ได้อย่างปลอดภัย |
รหัส
รหัสข้อผิดพลาด Canonical สำหรับ gRPC API
บางครั้งอาจมีรหัสข้อผิดพลาดหลายรายการที่เกี่ยวข้อง บริการควรแสดงรหัสข้อผิดพลาดที่เฉพาะเจาะจงที่สุดที่เกี่ยวข้อง เช่น ให้ใช้รหัส OUT_OF_RANGE แทน FAILED_PRECONDITION หากใช้ได้ทั้ง 2 รหัส ในทำนองเดียวกัน ให้เลือก NOT_FOUND หรือ ALREADY_EXISTS แทน FAILED_PRECONDITION
| Enum | |
|---|---|
OK |
ไม่ใช่ข้อผิดพลาด แต่จะแสดงผลเมื่อสำเร็จ การแมป HTTP: 200 OK |
CANCELLED |
การดำเนินการถูกยกเลิก โดยปกติแล้วผู้โทรจะเป็นผู้ยกเลิก การแมป HTTP: 499 คำขอที่ไคลเอ็นต์ปิดการเชื่อมต่อ |
UNKNOWN |
ข้อผิดพลาดที่ไม่รู้จัก เช่น ระบบอาจแสดงข้อผิดพลาดนี้เมื่อค่า การแมป HTTP: 500 ข้อผิดพลาดภายในเซิร์ฟเวอร์ |
INVALID_ARGUMENT |
ไคลเอ็นต์ระบุอาร์กิวเมนต์ไม่ถูกต้อง โปรดทราบว่าสิ่งนี้แตกต่างจาก การแมป HTTP: 400 คำขอไม่ถูกต้อง |
DEADLINE_EXCEEDED |
กำหนดเวลาหมดอายุก่อนที่การดำเนินการจะเสร็จสมบูรณ์ สำหรับการดำเนินการที่เปลี่ยนสถานะของระบบ ระบบอาจแสดงข้อผิดพลาดนี้แม้ว่าการดำเนินการจะเสร็จสมบูรณ์แล้วก็ตาม เช่น การตอบกลับที่สำเร็จจากเซิร์ฟเวอร์อาจล่าช้าจนเลยกำหนดเวลา การแมป HTTP: 504 เกตเวย์หมดเวลา |
NOT_FOUND |
ไม่พบเอนทิตีที่ขอ (เช่น ไฟล์หรือไดเรกทอรี) หมายเหตุสำหรับนักพัฒนาเซิร์ฟเวอร์: หากคำขอถูกปฏิเสธสำหรับผู้ใช้ทั้งกลุ่ม เช่น การเปิดตัวฟีเจอร์แบบค่อยเป็นค่อยไปหรือรายการที่อนุญาตที่ไม่มีในเอกสาร การแมป HTTP: 404 ไม่พบ |
ALREADY_EXISTS |
มีเอนทิตีที่ไคลเอ็นต์พยายามสร้างอยู่แล้ว (เช่น ไฟล์หรือไดเรกทอรี) การแมป HTTP: 409 เกิดความขัดแย้ง |
PERMISSION_DENIED |
ผู้โทรไม่มีสิทธิ์ดำเนินการที่ระบุ การแมป HTTP: 403 Forbidden |
UNAUTHENTICATED |
คำขอไม่มีข้อมูลเข้าสู่ระบบการตรวจสอบสิทธิ์ที่ถูกต้องสำหรับการดำเนินการ การแมป HTTP: 401 ไม่ได้รับอนุญาต |
RESOURCE_EXHAUSTED |
ทรัพยากรบางอย่างหมดแล้ว อาจเป็นโควต้าต่อผู้ใช้ หรืออาจเป็นระบบไฟล์ทั้งหมดที่ไม่มีพื้นที่ การแมป HTTP: 429 มีคำขอมากเกินไป |
FAILED_PRECONDITION |
ระบบปฏิเสธการดำเนินการเนื่องจากระบบไม่อยู่ในสถานะที่จำเป็นสำหรับการดำเนินการ เช่น ไดเรกทอรีที่จะลบไม่ใช่ไดเรกทอรีว่าง มีการดำเนินการ rmdir กับรายการที่ไม่ใช่ไดเรกทอรี เป็นต้น ผู้ใช้บริการสามารถใช้หลักเกณฑ์ต่อไปนี้เพื่อเลือกระหว่าง การแมป HTTP: 400 คำขอไม่ถูกต้อง |
ABORTED |
การดำเนินการถูกยกเลิก โดยปกติแล้วเกิดจากปัญหาการทำงานพร้อมกัน เช่น การตรวจสอบลำดับไม่สำเร็จหรือการยกเลิกธุรกรรม ดูหลักเกณฑ์ด้านบนเพื่อเลือกระหว่าง การแมป HTTP: 409 เกิดความขัดแย้ง |
OUT_OF_RANGE |
การดำเนินการพยายามดำเนินการนอกช่วงที่ถูกต้อง เช่น การค้นหาหรือการอ่านที่เกินจุดสิ้นสุดของไฟล์ ข้อผิดพลาดนี้ต่างจาก
การแมป HTTP: 400 คำขอไม่ถูกต้อง |
UNIMPLEMENTED |
การดำเนินการนี้ยังไม่เสร็จสิ้นหรือไม่รองรับ/เปิดใช้ในบริการนี้ การแมป HTTP: 501 ไม่มีการใช้งาน |
INTERNAL |
ข้อผิดพลาดภายใน ซึ่งหมายความว่าระบบพื้นฐานไม่เป็นไปตามข้อกำหนดบางอย่างที่คาดไว้ รหัสข้อผิดพลาดนี้สงวนไว้สำหรับข้อผิดพลาดร้ายแรง การแมป HTTP: 500 ข้อผิดพลาดภายในเซิร์ฟเวอร์ |
UNAVAILABLE |
ไม่พร้อมให้บริการนี้ในขณะนี้ ซึ่งมักจะเป็นเงื่อนไขชั่วคราวที่แก้ไขได้โดยการลองอีกครั้งด้วยการหยุดชั่วคราว โปรดทราบว่าการลองดำเนินการที่ไม่ใช่แบบ Idempotent อีกครั้งอาจไม่ปลอดภัยเสมอไป ดูหลักเกณฑ์ด้านบนเพื่อเลือกระหว่าง การแมป HTTP: 503 ไม่พร้อมให้บริการ |
DATA_LOSS |
ข้อมูลสูญหายโดยกู้คืนไม่ได้หรือข้อมูลเสียหาย การแมป HTTP: 500 ข้อผิดพลาดภายในเซิร์ฟเวอร์ |
ErrorInfo
อธิบายสาเหตุของข้อผิดพลาดพร้อมรายละเอียดที่มีโครงสร้าง
ตัวอย่างข้อผิดพลาดเมื่อติดต่อ API "pubsub.googleapis.com" เมื่อไม่ได้เปิดใช้
{ "reason": "API_DISABLED"
"domain": "googleapis.com"
"metadata": {
"resource": "projects/123",
"service": "pubsub.googleapis.com"
}
}
การตอบกลับนี้บ่งชี้ว่าไม่ได้เปิดใช้ API pubsub.googleapis.com
ตัวอย่างข้อผิดพลาดที่แสดงเมื่อพยายามสร้างอินสแตนซ์ Spanner ในภูมิภาคที่สินค้าหมด
{ "reason": "STOCKOUT"
"domain": "spanner.googleapis.com",
"metadata": {
"availableRegions": "us-central1,us-east2"
}
}
| ช่อง | |
|---|---|
reason |
สาเหตุของข้อผิดพลาด นี่คือค่าคงที่ที่ระบุสาเหตุที่ใกล้ที่สุดของข้อผิดพลาด เหตุผลของข้อผิดพลาดจะแตกต่างกันภายในโดเมนของข้อผิดพลาดที่เฉพาะเจาะจง ควรมีอักขระไม่เกิน 63 ตัวและตรงกับนิพจน์ทั่วไปของ |
domain |
การจัดกลุ่มเชิงตรรกะที่ "เหตุผล" อยู่ โดยทั่วไป โดเมนข้อผิดพลาดคือชื่อบริการที่ลงทะเบียนของเครื่องมือหรือผลิตภัณฑ์ที่สร้างข้อผิดพลาด เช่น "pubsub.googleapis.com" หากข้อผิดพลาดเกิดจากโครงสร้างพื้นฐานทั่วไปบางอย่าง โดเมนข้อผิดพลาดต้องเป็นค่าที่ไม่ซ้ำกันทั่วโลกซึ่งระบุโครงสร้างพื้นฐาน สำหรับโครงสร้างพื้นฐานของ Google API โดเมนข้อผิดพลาดคือ "googleapis.com" |
metadata |
รายละเอียดเพิ่มเติมที่มีโครงสร้างเกี่ยวกับข้อผิดพลาดนี้ คีย์ต้องตรงกับนิพจน์ทั่วไปของ |
ความช่วยเหลือ
ระบุลิงก์ไปยังเอกสารประกอบหรือสำหรับการดำเนินการนอกแบนด์
ตัวอย่างเช่น หากการตรวจสอบโควต้าล้มเหลวโดยมีข้อผิดพลาดที่ระบุว่าโปรเจ็กต์ที่เรียกใช้ไม่ได้เปิดใช้บริการที่เข้าถึงอยู่ ข้อความนี้อาจมี URL ที่นำไปยังส่วนที่ถูกต้องในคอนโซลนักพัฒนาแอปโดยตรงเพื่อเปลี่ยนบิต
| ช่อง | |
|---|---|
links[] |
URL ที่ชี้ไปยังข้อมูลเพิ่มเติมเกี่ยวกับการจัดการข้อผิดพลาดปัจจุบัน |
ลิงก์
อธิบายลิงก์ URL
| ช่อง | |
|---|---|
description |
อธิบายว่าลิงก์มีอะไรบ้าง |
url |
URL ของลิงก์ |
LocalizedMessage
แสดงข้อความแสดงข้อผิดพลาดที่แปลแล้วซึ่งส่งคืนให้ผู้ใช้ได้อย่างปลอดภัยและแนบไปกับข้อผิดพลาด RPC ได้
| ช่อง | |
|---|---|
locale |
ภาษาที่ใช้ตามข้อกำหนดที่ระบุไว้ที่ https://www.rfc-editor.org/rfc/bcp/bcp47.txt เช่น "en-US", "fr-CH", "es-MX" |
message |
ข้อความแสดงข้อผิดพลาดที่แปลแล้วในภาษาข้างต้น |
RequestInfo
มีข้อมูลเมตาเกี่ยวกับคำขอที่ไคลเอ็นต์สามารถแนบเมื่อรายงานข้อบกพร่องหรือให้ความคิดเห็นในรูปแบบอื่นๆ
| ช่อง | |
|---|---|
request_id |
สตริงทึบแสงที่บริการที่สร้างสตริงนี้เท่านั้นที่ควรตีความ เช่น ใช้เพื่อระบุคำขอในบันทึกของบริการได้ |
serving_data |
ข้อมูลใดๆ ที่ใช้ในการแสดงคำขอนี้ เช่น สแต็กเทรซที่เข้ารหัสซึ่งส่งกลับไปยังผู้ให้บริการเพื่อการแก้ไขข้อบกพร่องได้ |
สถานะ
Status ประเภทจะกำหนดรูปแบบข้อผิดพลาดเชิงตรรกะที่เหมาะกับสภาพแวดล้อมการเขียนโปรแกรมต่างๆ รวมถึง REST API และ RPC API โดย gRPC จะใช้พอร์ตนี้ Statusแต่ละข้อความจะมีข้อมูล 3 ส่วน ได้แก่ รหัสข้อผิดพลาด ข้อความแสดงข้อผิดพลาด และรายละเอียดข้อผิดพลาด
ดูข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบข้อผิดพลาดนี้และวิธีใช้งานได้ในคู่มือการออกแบบ API
| ช่อง | |
|---|---|
code |
รหัสสถานะซึ่งควรเป็นค่า enum ของ |
message |
ข้อความแสดงข้อผิดพลาดที่ส่งถึงนักพัฒนาแอป ซึ่งควรเป็นภาษาอังกฤษ ข้อความแสดงข้อผิดพลาดที่ผู้ใช้เห็นควรได้รับการแปลและส่งในช่อง |
details[] |
รายการข้อความที่มีรายละเอียดข้อผิดพลาด API จะใช้ชุดประเภทข้อความทั่วไป |