کدهای پاسخ وضعیت

کدهای وضعیت زیر را می توان در پاسخ های gRPC برگرداند. این برای تمام نسخه‌های gRPC مستند شده در این سایت قابل اجرا است.

کد وضعیت یادداشت
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 این سرویس در حال حاضر در دسترس نیست. این به احتمال زیاد یک وضعیت گذرا است که در صورت تکرار با یک عقب‌نشینی قابل اصلاح است.
15 DATA_LOSS از دست دادن یا فساد غیرقابل جبران داده.
16 UNAUTHENTICATED درخواست دارای اعتبارنامه اعتبارسنجی معتبر برای عملیات نیست.

گاهی اوقات ممکن است چندین کد خطا اعمال شود. سرویس‌ها باید خاص‌ترین کد خطای اعمال شده را برگردانند. برای مثال، اگر هر دو کد اعمال شوند OUT_OF_RANGE را به FAILED_PRECONDITION ترجیح دهید. به طور مشابه، NOT_FOUND یا ALREADY_EXISTS را به FAILED_PRECONDITION ترجیح دهید.

FAILED_PRECONDITION در مقابل ABORTED در مقابل غیرفعال

در زیر یک آزمون تورنسل است که ممکن است به شما کمک کند بین 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 قبل از start_date_restrict است.
  • اگر مقدار به دلیل وضعیت سیستم نامعتبر است، اما مقدار OUT_OF_RANGE نیست، از FAILED_PRECONDITION استفاده کنید.