Package google.rpc

شاخص

کد

کدهای خطای متعارف برای APIهای gRPC.

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

Enums
OK

خطا نیست؛ با موفقیت بازگشت.

نقشه برداری HTTP: 200 OK

CANCELLED

این عملیات معمولاً توسط تماس گیرنده لغو شد.

HTTP Mapping: 499 Client Request

UNKNOWN

خطای ناشناخته به عنوان مثال، این خطا ممکن است زمانی برگردانده شود که یک مقدار Status دریافت شده از فضای آدرس دیگری متعلق به فضای خطایی باشد که در این فضای آدرس شناخته شده نیست. همچنین خطاهای مطرح شده توسط APIهایی که اطلاعات خطای کافی را بر نمی گردند ممکن است به این خطا تبدیل شوند.

HTTP Mapping: 500 خطای سرور داخلی

INVALID_ARGUMENT

مشتری یک آرگومان نامعتبر را مشخص کرده است. توجه داشته باشید که این با FAILED_PRECONDITION متفاوت است. INVALID_ARGUMENT آرگومان هایی را نشان می دهد که بدون توجه به وضعیت سیستم مشکل ساز هستند (به عنوان مثال، نام فایل نادرست).

نقشه برداری HTTP: 400 درخواست بد

DEADLINE_EXCEEDED

مهلت قبل از تکمیل عملیات به پایان رسید. برای عملیاتی که وضعیت سیستم را تغییر می دهد، حتی اگر عملیات با موفقیت به پایان رسیده باشد، ممکن است این خطا برگردانده شود. به عنوان مثال، یک پاسخ موفقیت‌آمیز از یک سرور می‌توانست آنقدر به تأخیر بیفتد که مهلت آن به پایان برسد.

HTTP Mapping: 504 Gateway Timeout

NOT_FOUND

برخی از موجودیت های درخواستی (به عنوان مثال، فایل یا دایرکتوری) یافت نشد.

توجه به توسعه دهندگان سرور: اگر درخواستی برای کل دسته از کاربران رد شود، مانند عرضه تدریجی ویژگی یا لیست مجاز غیرمستند، NOT_FOUND ممکن است استفاده شود. اگر درخواستی برای برخی از کاربران در یک کلاس از کاربران رد شود، مانند کنترل دسترسی مبتنی بر کاربر، باید از PERMISSION_DENIED استفاده شود.

نقشه برداری HTTP: 404 یافت نشد

ALREADY_EXISTS

موجودیتی که یک کلاینت سعی کرد ایجاد کند (مثلاً فایل یا دایرکتوری) از قبل وجود دارد.

HTTP Mapping: 409 Conflict

PERMISSION_DENIED

تماس گیرنده اجازه اجرای عملیات مشخص شده را ندارد. PERMISSION_DENIED نباید برای ردهای ناشی از فرسودگی برخی منابع استفاده شود (به جای آن RESOURCE_EXHAUSTED برای آن خطاها استفاده کنید). اگر تماس گیرنده قابل شناسایی نباشد، PERMISSION_DENIED نباید استفاده شود (به جای آن از UNAUTHENTICATED برای آن خطاها استفاده کنید). این کد خطا به این معنی نیست که درخواست معتبر است یا موجودیت درخواست شده وجود دارد یا سایر پیش شرط ها را برآورده می کند.

HTTP Mapping: 403 Forbidden

UNAUTHENTICATED

درخواست دارای اعتبار احراز هویت معتبر برای عملیات نیست.

نقشه برداری HTTP: 401 غیر مجاز

RESOURCE_EXHAUSTED

برخی از منابع تمام شده است، شاید سهمیه هر کاربر، یا شاید کل سیستم فایل خالی است.

نقشه برداری HTTP: 429 درخواست خیلی زیاد

FAILED_PRECONDITION

عملیات رد شد زیرا سیستم در وضعیت لازم برای اجرای عملیات نیست. به عنوان مثال، دایرکتوری که باید حذف شود خالی نیست، یک عملیات rmdir روی یک غیر دایرکتوری اعمال می شود و غیره.

پیاده‌کننده‌های سرویس می‌توانند از دستورالعمل‌های زیر برای تصمیم‌گیری بین FAILED_PRECONDITION ، ABORTED و UNAVAILABLE استفاده کنند: (الف) اگر مشتری بتواند فقط تماس ناموفق را دوباره امتحان کند، از UNAVAILABLE استفاده کنید. (ب) اگر مشتری باید در سطح بالاتری دوباره تلاش کند، از ABORTED استفاده کنید. به عنوان مثال، هنگامی که یک تست و تنظیم مشخص شده توسط سرویس گیرنده با شکست مواجه می شود، نشان می دهد که مشتری باید یک دنباله خواندن-تغییر-نوشتن را دوباره راه اندازی کند. (ج) از FAILED_PRECONDITION استفاده کنید اگر کلاینت نباید دوباره تلاش کند تا زمانی که وضعیت سیستم به صراحت ثابت نشده باشد. به عنوان مثال، اگر یک "rmdir" به دلیل خالی نبودن دایرکتوری از کار بیفتد، FAILED_PRECONDITION باید برگردانده شود زیرا مشتری نباید دوباره امتحان کند مگر اینکه فایل ها از دایرکتوری حذف شوند.

نقشه برداری HTTP: 400 درخواست بد

ABORTED

این عملیات معمولاً به دلیل یک مشکل همزمانی مانند شکست چک ترتیب‌دهنده یا لغو تراکنش متوقف شد.

برای تصمیم گیری بین FAILED_PRECONDITION , ABORTED , و UNAVAILABLE به دستورالعمل های بالا مراجعه کنید.

HTTP Mapping: 409 Conflict

OUT_OF_RANGE

عملیات از محدوده معتبر گذشته است. به عنوان مثال، جستجو یا خواندن پایان فایل گذشته.

برخلاف INVALID_ARGUMENT ، این خطا نشان دهنده مشکلی است که در صورت تغییر وضعیت سیستم ممکن است برطرف شود. به عنوان مثال، یک سیستم فایل 32 بیتی اگر از شما خواسته شود در یک آفست خوانده شود که در محدوده [0,2^32-1] نیست، INVALID_ARGUMENT تولید می کند، اما اگر از یک آفست گذشته از فعلی خواسته شود OUT_OF_RANGE بخواند. اندازه فایل

مقداری همپوشانی بین FAILED_PRECONDITION و OUT_OF_RANGE وجود دارد. توصیه می‌کنیم هنگام اعمال OUT_OF_RANGE (خطای خاص‌تر) استفاده کنید تا تماس‌گیرندگانی که در حال تکرار در یک فاصله هستند بتوانند به راحتی به دنبال خطای OUT_OF_RANGE بگردند تا تشخیص دهند که چه زمانی انجام شده است.

نقشه برداری HTTP: 400 درخواست بد

UNIMPLEMENTED

عملیات اجرا نشده یا در این سرویس پشتیبانی/فعال نمی شود.

نقشه برداری HTTP: 501 اجرا نشده است

INTERNAL

خطاهای داخلی این بدان معنی است که برخی از متغیرهای مورد انتظار سیستم اصلی شکسته شده اند. این کد خطا برای خطاهای جدی رزرو شده است.

HTTP Mapping: 500 خطای سرور داخلی

UNAVAILABLE

این سرویس در حال حاضر در دسترس نیست. این به احتمال زیاد یک وضعیت گذرا است، که می توان با تلاش مجدد با عقب نشینی آن را اصلاح کرد. توجه داشته باشید که همیشه امتحان مجدد عملیات های غیر توانمند ایمن نیست.

برای تصمیم گیری بین FAILED_PRECONDITION , ABORTED , و UNAVAILABLE به دستورالعمل های بالا مراجعه کنید.

نقشه برداری HTTP: سرویس 503 در دسترس نیست

DATA_LOSS

از دست دادن یا فساد غیرقابل جبران داده.

HTTP Mapping: 500 خطای سرور داخلی

وضعیت

نوع Status یک مدل خطای منطقی را تعریف می کند که برای محیط های برنامه نویسی مختلف، از جمله REST API و RPC API مناسب است. توسط gRPC استفاده می شود. هر پیام Status شامل سه داده است: کد خطا، پیام خطا و جزئیات خطا.

در راهنمای طراحی API می‌توانید درباره این مدل خطا و نحوه کار با آن اطلاعات بیشتری کسب کنید.

فیلدها
code

int32

کد وضعیت، که باید مقداری از google.rpc.Code باشد.

message

string

یک پیغام خطای برنامه‌نویس، که باید به زبان انگلیسی باشد. هر پیام خطای کاربر باید بومی سازی شده و در قسمت google.rpc.Status.details ارسال شود یا توسط مشتری بومی سازی شود.

details[]

Any

لیستی از پیام هایی که حاوی جزئیات خطا هستند. مجموعه ای متداول از انواع پیام ها برای استفاده API ها وجود دارد.