โค้ดตอบกลับสถานะ

รหัสสถานะต่อไปนี้สามารถแสดงในการตอบสนอง gRPC วิธีการนี้ใช้กับ gRPC ทุกเวอร์ชันที่ระบุไว้ในเว็บไซต์นี้

รหัส สถานะ Notes
0 OK เดินทางกลับในวันที่ Success
1 CANCELLED โดยปกติผู้โทรจะยกเลิกการดำเนินการแล้ว
2 UNKNOWN ตัวอย่างเช่น ข้อผิดพลาดนี้อาจถูกส่งคืนเมื่อค่าสถานะที่ได้รับจากพื้นที่ที่อยู่อื่นเป็นของพื้นที่ข้อผิดพลาดที่ไม่รู้จักในพื้นที่ที่อยู่นี้ นอกจากนี้ ข้อผิดพลาดที่เกิดจาก API ที่แสดงข้อมูลข้อผิดพลาดไม่มากพออาจแปลงเป็นข้อผิดพลาดนี้ได้
3 INVALID_ARGUMENT ไคลเอ็นต์ระบุอาร์กิวเมนต์ไม่ถูกต้อง
4 DEADLINE_EXCEEDED กำหนดเวลาหมดอายุก่อนที่การดำเนินการจะเสร็จสมบูรณ์ สำหรับการดำเนินการที่เปลี่ยนสถานะของระบบ อาจมีการแสดงข้อผิดพลาดนี้แม้ว่าการดำเนินการจะเสร็จเรียบร้อยแล้วก็ตาม เช่น การตอบกลับที่สำเร็จจากเซิร์ฟเวอร์ที่มีความล่าช้าเป็นเวลานานพอให้หมดเวลา
5 NOT_FOUND ไม่พบเอนทิตีที่ขอบางรายการ
6 ALREADY_EXISTS มีเอนทิตีที่ไคลเอ็นต์พยายามสร้างอยู่แล้ว
7 PERMISSION_DENIED ผู้โทรไม่มีสิทธิ์ดำเนินการที่ระบุ อย่าใช้ PERMISSION_DENIED สำหรับการปฏิเสธที่เกิดจากการใช้ทรัพยากรบางส่วนจนหมด ให้ใช้ RESOURCE_EXHAUSTED แทนสำหรับข้อผิดพลาดเหล่านั้น อย่าใช้ PERMISSION_DENIED หากระบบระบุผู้โทรไม่ได้ (ใช้ UNAUTHENTICATED แทนสำหรับข้อผิดพลาดเหล่านั้น) การได้รับรหัสข้อผิดพลาด PERMISSION_DENIED ไม่ได้หมายความว่าคําขอถูกต้องหรือมีเอนทิตีที่ขออยู่แล้ว หรือเป็นไปตามเงื่อนไขเบื้องต้นอื่นๆ
8 RESOURCE_EXHAUSTED มีการใช้ทรัพยากรบางรายการจนหมดแล้ว อาจเป็นโควต้าสำหรับผู้ใช้แต่ละราย หรือทรัพยากรทั้งระบบไม่มีพื้นที่เหลือ
9 FAILED_PRECONDITION การดำเนินการถูกปฏิเสธเนื่องจากระบบไม่อยู่ในสถานะที่จำเป็นสำหรับการดำเนินการ เช่น ไดเรกทอรีที่จะลบจะไม่ว่างเปล่าหรือมีการใช้การดำเนินการ rmdir กับไดเรกทอรีที่ไม่ใช่ไดเรกทอรี
10 ABORTED ล้มเลิกการดำเนินการแล้ว ซึ่งมักเกิดจากปัญหาการเกิดขึ้นพร้อมกัน เช่น การตรวจสอบตัวจัดลำดับไม่สำเร็จหรือล้มเลิกธุรกรรม
11 OUT_OF_RANGE ดำเนินการเกินช่วงที่ถูกต้อง
12 UNIMPLEMENTED บริการนี้ยังไม่มีผลหรือไม่รองรับ/เปิดใช้การดำเนินการนี้
13 INTERNAL ข้อผิดพลาดภายใน ซึ่งหมายความว่าตัวแปรบางอย่างที่คาดไว้โดยระบบพื้นฐานขัดข้อง รหัสข้อผิดพลาดนี้ใช้สำหรับข้อผิดพลาดร้ายแรงเท่านั้น
14 UNAVAILABLE ไม่พร้อมให้บริการนี้ในขณะนี้ นี่น่าจะเป็นเงื่อนไขชั่วคราวที่แก้ไขได้หากลองดำเนินการอีกครั้งโดยใช้ Backoff
15 DATA_LOSS ข้อมูลเสียหายหรือสูญหายโดยกู้คืนไม่ได้
16 UNAUTHENTICATED คำขอไม่มีข้อมูลเข้าสู่ระบบการตรวจสอบสิทธิ์ที่ถูกต้องสำหรับการดำเนินการ

บางครั้งอาจมีรหัสข้อผิดพลาดหลายอย่าง บริการต่างๆ จะแสดงรหัสข้อผิดพลาดที่เจาะจงที่สุดที่เกี่ยวข้อง เช่น ขอให้ OUT_OF_RANGE มากกว่า FAILED_PRECONDITION หากทั้งสองรหัสมีผล ในทำนองเดียวกัน โปรดกำหนด NOT_FOUND หรือ ALREADY_EXISTS มากกว่า FAILED_PRECONDITION

FAILED_PRECONDITION เทียบกับ "ล้มเลิก" กับ UNAVAILABLE

ต่อไปนี้คือการทดสอบลิมมัสที่อาจช่วยคุณตัดสินใจระหว่าง FAILED_PRECONDITION, ABORTED และ UNAVAILABLE

  • ใช้ UNAVAILABLE หากไคลเอ็นต์ลองสลับการโทรที่ไม่สำเร็จอีกครั้งได้
  • ใช้ ABORTED หากไคลเอ็นต์ควรลองดำเนินการอีกครั้งในระดับที่สูงกว่า เช่น เมื่อไคลเอ็นต์ชุดทดสอบที่ระบุล้มเหลว ซึ่งบ่งชี้ว่าไคลเอ็นต์ควรเริ่มลำดับการเขียนแบบ Read-modify-write ใหม่
  • ใช้ FAILED_PRECONDITION หากไคลเอ็นต์ไม่ควรลองอีกครั้งจนกว่าสถานะของระบบจะได้รับการแก้ไขอย่างชัดเจน เช่น หากตั้งค่า "rmdir" ไม่สำเร็จเนื่องจากไดเรกทอรีไม่ว่างเปล่า วิธีที่ดีที่สุดคือแสดงผล FAILED_PRECONDITION เนื่องจากไคลเอ็นต์ไม่ควรลองอีกครั้งจนกว่าจะลบไฟล์ออกจากไดเรกทอรี

INVALID_ARGUMENT เทียบกับ FAILED_PRECONDITION เทียบกับ OUT_OF_RANGE

ต่อไปนี้คือการทดสอบลิมมัสที่อาจช่วยคุณตัดสินใจระหว่าง INVALID_ARGUMENT, FAILED_PRECONDITION และ OUT_OF_RANGE

  • ใช้ INVALID_ARGUMENT หากอาร์กิวเมนต์มีปัญหาไม่ว่าระบบจะมีสถานะใดก็ตาม ตัวอย่างเช่น URL ที่มีรูปแบบไม่ถูกต้อง
  • ใช้ OUT_OF_RANGE หากค่าอยู่นอกช่วงเนื่องจากสถานะของระบบ ตัวอย่างเช่น start_date คือก่อนวันที่ start_date_restrict
  • ใช้ FAILED_PRECONDITION หากค่าไม่ถูกต้องเนื่องจากสถานะของระบบ แต่ไม่ใช่ค่า OUT_OF_RANGE