گاهی اوقات ممکن است چندین کد خطا اعمال شود. سرویسها باید خاصترین کد خطای اعمال شده را برگردانند. برای مثال، اگر هر دو کد اعمال شوند، 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 میتوانید درباره این مدل خطا و نحوه کار با آن اطلاعات بیشتری کسب کنید.
یک پیغام خطای برنامهنویس، که باید به زبان انگلیسی باشد. هر پیام خطای کاربر باید بومی سازی شده و در قسمت google.rpc.Status.details ارسال شود یا توسط مشتری بومی سازی شود.
تاریخ آخرین بهروزرسانی 2024-10-26 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2024-10-26 بهوقت ساعت هماهنگ جهانی."],[[["`google.rpc.Code` defines canonical error codes for gRPC APIs, mapping to HTTP status codes for easy integration."],["`google.rpc.Status` provides a structured error model with a code, message, and optional details for richer error handling."],["Developers should prioritize returning the most specific error code from `google.rpc.Code` that applies to the situation."],["Error messages within `google.rpc.Status` are intended for developers and should be in English, while user-facing messages should be handled separately."]]],[]]