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

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

الرمز الحالة Notes
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_ لذلك مقابل FAILED_PREStatus في مقابل 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.