رموز الاستجابة للحالة

يمكن عرض رموز الحالة التالية في استجابات gRPC. ينطبق ذلك على جميع إصدارات gRPC الموثَّقة على هذا الموقع الإلكتروني.

الرمز الحالة ملاحظات
0 OK سنتواصل معك في ‎Success.
1 CANCELLED تم إلغاء العملية، عادةً من قِبل المتصل.
2 UNKNOWN على سبيل المثال، قد يتم عرض هذا الخطأ عندما تنتمي قيمة الحالة التي تمّ تلقّيها من مساحة عناوين أخرى إلى مساحة خطأ غير معروفة في مساحة العناوين هذه. وقد يتم أيضًا تحويل الأخطاء التي تنشئها واجهات برمجة التطبيقات التي لا تعرض معلومات كافية عن الخطأ إلى هذا الخطأ.
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 هذه الخدمة غير متاحة حاليًا. من المرجّح أن يكون هذا ظرفًا عابرًا يمكن تصحيحه في حال إعادة المحاولة مع التراجع.
15 DATA_LOSS ثمة بيانات تالفة أو مفقودة ويتعذّر استرجاعها.
16 UNAUTHENTICATED لا يحتوي الطلب على بيانات اعتماد مصادقة صالحة للعملية.

في بعض الأحيان، قد تنطبق رموز أخطاء متعددة. يجب أن تعرض الخدمات رمز الخطأ الأكثر تحديدًا الذي ينطبق. على سبيل المثال، يُفضَّل استخدام OUT_OF_RANGE بدلاً من FAILED_PRECONDITION إذا كان كلا الرمزين ينطبقان. وبالمثل، يُفضَّل استخدام NOT_FOUND أو ALREADY_EXISTS بدلاً من FAILED_PRECONDITION.

FAILED_PRECONDITION مقارنةً بـ ABORTED مقارنةً بـ UNAVAILABLE

في ما يلي اختبار بسيط قد يساعدك في الاختيار بين FAILED_PRECONDITION وABORTED وUNAVAILABLE:

  • استخدِم UNAVAILABLE إذا كان بإمكان العميل إعادة محاولة المكالمة التي تعذّر إجراؤها فقط.
  • استخدِم ABORTED إذا كان على العميل إعادة المحاولة على مستوى أعلى، مثل عندما يفشل اختبار تحديد العميل وضبطه، ما يشير إلى أنّ العميل يجب أن يعيد بدء تسلسل القراءة والتعديل والكتابة.
  • استخدِم 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_restrict.
  • استخدِم FAILED_PRECONDITION إذا كانت القيمة غير صالحة بسبب حالة النظام، ولكنّها ليست قيمة OUT_OF_RANGE.