ประเภท Status
กำหนดโมเดลข้อผิดพลาดเชิงตรรกะที่เหมาะกับสภาพแวดล้อมในการเขียนโปรแกรมแบบต่างๆ ซึ่งรวมถึง REST API และ RPC API gRPC ใช้ รูปแบบข้อผิดพลาดได้รับการออกแบบดังนี้
- ใช้งานง่ายและเข้าใจสำหรับผู้ใช้ส่วนใหญ่
- ยืดหยุ่นพอที่จะตอบสนองความต้องการที่ไม่คาดคิด
ภาพรวม
ข้อความ Status
มีข้อมูล 3 อย่าง ได้แก่ รหัสข้อผิดพลาด ข้อความแสดงข้อผิดพลาด และรายละเอียดข้อผิดพลาด รหัสข้อผิดพลาดควรเป็นค่า enum ของ google.rpc.Code
แต่อาจยอมรับรหัสข้อผิดพลาดเพิ่มเติมได้หากต้องการ ข้อความแสดงข้อผิดพลาดควรเป็นข้อความภาษาอังกฤษที่นักพัฒนาแอปพบเพื่อช่วยให้นักพัฒนาแอปเข้าใจและแก้ปัญหาข้อผิดพลาดได้ หากต้องการข้อความแสดงข้อผิดพลาดที่แสดงต่อผู้ใช้ที่แปลแล้ว ให้ใส่ข้อความที่แปลแล้วไว้ในรายละเอียดข้อผิดพลาดหรือแปลเป็นภาษาท้องถิ่นในไคลเอ็นต์ รายละเอียดข้อผิดพลาดที่ไม่บังคับอาจมีข้อมูลที่กำหนดเองเกี่ยวกับข้อผิดพลาด มีชุดประเภทรายละเอียดข้อผิดพลาดที่กำหนดไว้ล่วงหน้าในแพ็กเกจ google.rpc
ซึ่งใช้ได้กับเงื่อนไขข้อผิดพลาดทั่วไป
การแมปภาษา
ข้อความ Status
เป็นการนำเสนอแบบตรรกะของโมเดลข้อผิดพลาด แต่ก็อาจไม่ใช่รูปแบบสายไฟจริงเสมอไป เมื่อข้อความ Status
แสดงในไลบรารีของไคลเอ็นต์ที่แตกต่างกันและโปรโตคอลการใช้สายที่ต่างกัน ระบบจึงแมปข้อความได้ต่างกัน ตัวอย่างเช่น อาจแมปกับข้อยกเว้นบางอย่างใน Java แต่อาจแมปกับรหัสข้อผิดพลาดบางรายการใน C
การใช้งานอื่นๆ
โมเดลข้อผิดพลาดและข้อความ Status
ใช้ได้ในหลายสภาพแวดล้อม ไม่ว่าจะมีหรือไม่มี API ก็ตาม เพื่อให้ประสบการณ์ของนักพัฒนาแอปที่สอดคล้องกันในสภาพแวดล้อมต่างๆ
ตัวอย่างการใช้โมเดลข้อผิดพลาดนี้ ได้แก่
ข้อผิดพลาดบางส่วน หากบริการจำเป็นต้องแสดงข้อผิดพลาดบางส่วนให้ไคลเอ็นต์ บริการอาจฝัง
Status
ไว้ในการตอบสนองปกติเพื่อระบุข้อผิดพลาดบางส่วนข้อผิดพลาดของเวิร์กโฟลว์ เวิร์กโฟลว์ทั่วไปมีหลายขั้นตอน แต่ละขั้นตอนอาจมีข้อความ
Status
สำหรับรายงานข้อผิดพลาดการทำงานเป็นแบตช์ ถ้าไคลเอ็นต์ใช้คำขอแบบกลุ่มและการตอบกลับแบบกลุ่ม ควรใช้ข้อความ
Status
โดยตรงภายในการตอบกลับแบบกลุ่ม โดยใช้ข้อความ 1 ข้อความต่อการตอบกลับย่อยข้อผิดพลาดแต่ละรายการการทำงานแบบไม่พร้อมกัน หากการเรียก API มีการฝังการดำเนินการแบบไม่พร้อมกันไว้ในการตอบสนอง สถานะของการดำเนินการเหล่านั้นควรแสดงโดยใช้ข้อความ
Status
โดยตรงการบันทึก หากเกิดข้อผิดพลาดบางอย่างเกี่ยวกับ API ในบันทึก ระบบอาจใช้ข้อความ
Status
ได้โดยตรงหลังจากที่มีการตัดข้อความด้วยเหตุผลด้านความปลอดภัย/ความเป็นส่วนตัว
การแสดง JSON | |
---|---|
{ "code": number, "message": string, "details": [ { "@type": string, field1: ..., ... } ] } |
ช่อง | |
---|---|
code |
รหัสสถานะ ซึ่งควรเป็นค่า enum ของ |
message |
ข้อความแสดงข้อผิดพลาดที่นักพัฒนาแอปเห็น ซึ่งควรเป็นภาษาอังกฤษ ข้อความแสดงข้อผิดพลาดที่แสดงต่อผู้ใช้ควรแปลและส่งในช่อง |
details[] |
รายการข้อความที่มีรายละเอียดข้อผิดพลาด API จะใช้ชุดประเภทข้อความที่พบได้ทั่วไป ออบเจ็กต์ที่มีช่องประเภทที่กำหนดเอง ช่องเพิ่มเติม |