فهرست
-
BadRequest(پیام) - پیام
BadRequest.FieldViolation -
Code(شمارشی) -
ErrorInfo(پیام) -
Help(پیام) -
Help.Link(پیام) -
LocalizedMessage(پیام) -
RequestInfo(پیام) -
Status(پیام)
درخواست بد
تخلفات موجود در درخواست کلاینت را توصیف میکند. این نوع خطا بر جنبههای نحوی درخواست تمرکز دارد.
| فیلدها | |
|---|---|
field_violations[] | تمام تخلفات را در درخواست مشتری شرح میدهد. |
نقض میدانی
نوعی پیام که برای توصیف یک فیلد درخواست خراب استفاده میشود.
| فیلدها | |
|---|---|
field | مسیری که به یک فیلد در بدنه درخواست منتهی میشود. مقدار، دنبالهای از شناسههای جدا شده با نقطه خواهد بود که یک فیلد بافر پروتکل را مشخص میکنند. موارد زیر را در نظر بگیرید: در این مثال،
در JSON، مقادیر مشابه به صورت زیر نمایش داده میشوند:
|
description | توضیحی در مورد اینکه چرا عنصر درخواست بد است. |
reason | دلیل خطای سطح فیلد. این یک مقدار ثابت است که علت تقریبی خطای سطح فیلد را مشخص میکند. باید به طور منحصر به فرد نوع FieldViolation را در محدوده google.rpc.ErrorInfo.domain مشخص کند. این مقدار باید حداکثر ۶۳ کاراکتر باشد و با یک عبارت منظم |
localized_message | یک پیام خطای محلی برای خطاهای سطح فیلد ارائه میدهد که بازگشت آن به مصرفکننده API ایمن است. |
کد
کدهای خطای متعارف برای API های gRPC.
گاهی اوقات ممکن است چندین کد خطا اعمال شود. سرویسها باید خاصترین کد خطایی که اعمال میشود را برگردانند. برای مثال، اگر هر دو کد اعمال میشوند، OUT_OF_RANGE به FAILED_PRECONDITION ترجیح دهید. به طور مشابه NOT_FOUND یا ALREADY_EXISTS را به FAILED_PRECONDITION ترجیح دهید.
| انومها | |
|---|---|
OK | خطا نیست؛ در صورت موفقیت برگردانده میشود. نگاشت HTTP: 200 OK |
CANCELLED | عملیات، معمولاً توسط تماسگیرنده، لغو میشد. نگاشت HTTP: درخواست بسته شده کلاینت ۴۹۹ |
UNKNOWN | خطای ناشناخته. برای مثال، این خطا ممکن است زمانی برگردانده شود که مقدار نگاشت HTTP: خطای ۵۰۰ سرور داخلی |
INVALID_ARGUMENT | کلاینت یک آرگومان نامعتبر مشخص کرده است. توجه داشته باشید که این با نگاشت HTTP: درخواست نامناسب ۴۰۰ |
DEADLINE_EXCEEDED | مهلت قبل از اتمام عملیات به پایان رسیده است. برای عملیاتی که وضعیت سیستم را تغییر میدهند، این خطا ممکن است حتی اگر عملیات با موفقیت انجام شده باشد، بازگردانده شود. به عنوان مثال، پاسخ موفقیتآمیز از سرور میتواند به اندازه کافی به تأخیر بیفتد تا مهلت منقضی شود. نگاشت HTTP: زمان انتظار دروازه ۵۰۴ |
NOT_FOUND | برخی از موجودیتهای درخواستی (مثلاً فایل یا دایرکتوری) یافت نشد. نکته برای توسعهدهندگان سرور: اگر درخواستی برای کل یک کلاس از کاربران رد شود، مانند انتشار تدریجی ویژگی یا لیست دسترسیهای بدون سند، میتوان از نگاشت HTTP: خطای ۴۰۴ یافت نشد |
ALREADY_EXISTS | موجودیتی که کلاینت سعی در ایجاد آن داشته است (مثلاً فایل یا دایرکتوری) از قبل وجود دارد. نگاشت HTTP: تداخل ۴۰۹ |
PERMISSION_DENIED | فراخواننده مجوز اجرای عملیات مشخص شده را ندارد. نگاشت HTTP: ۴۰۳ ممنوع |
UNAUTHENTICATED | درخواست، اعتبارنامههای احراز هویت معتبری برای عملیات ندارد. نگاشت HTTP: خطای ۴۰۱ غیرمجاز |
RESOURCE_EXHAUSTED | برخی از منابع به اتمام رسیدهاند، شاید سهمیه هر کاربر، یا شاید کل سیستم فایل فضای کافی ندارد. نگاشت HTTP: درخواستهای بسیار زیاد ۴۲۹ |
FAILED_PRECONDITION | این عملیات رد شد زیرا سیستم در حالت مورد نیاز برای اجرای عملیات نیست. برای مثال، دایرکتوری که قرار است حذف شود خالی نیست، عملیات rmdir روی یک دایرکتوری غیر از دایرکتوری اعمال میشود و غیره. پیادهسازیکنندگان سرویس میتوانند از دستورالعملهای زیر برای تصمیمگیری بین نگاشت HTTP: درخواست نامناسب ۴۰۰ |
ABORTED | این عملیات معمولاً به دلیل یک مشکل همزمانی مانند خرابی بررسی ترتیبسنج یا لغو تراکنش، لغو شد. برای تصمیمگیری بین نگاشت HTTP: تداخل ۴۰۹ |
OUT_OF_RANGE | این عملیات فراتر از محدودهی معتبر انجام شده است. مثلاً جستجو یا خواندن فراتر از انتهای فایل. برخلاف بین نگاشت HTTP: درخواست نامناسب ۴۰۰ |
UNIMPLEMENTED | این عملیات در این سرویس پیادهسازی نشده یا پشتیبانی/فعال نشده است. نگاشت HTTP: خطای ۵۰۱ پیادهسازی نشده است |
INTERNAL | خطاهای داخلی. این بدان معناست که برخی از ثابتهای مورد انتظار سیستم اصلی، دچار مشکل شدهاند. این کد خطا برای خطاهای جدی در نظر گرفته شده است. نگاشت HTTP: خطای ۵۰۰ سرور داخلی |
UNAVAILABLE | سرویس در حال حاضر در دسترس نیست. این به احتمال زیاد یک وضعیت گذرا است که میتوان با تلاش مجدد با یک backoff آن را اصلاح کرد. توجه داشته باشید که تلاش مجدد برای عملیات غیر خودتوان همیشه ایمن نیست. برای تصمیمگیری بین نگاشت HTTP: سرویس ۵۰۳ در دسترس نیست |
DATA_LOSS | از دست رفتن یا خرابی غیرقابل بازیابی دادهها. نگاشت HTTP: خطای ۵۰۰ سرور داخلی |
اطلاعات خطا
علت خطا را با جزئیات ساختاریافته شرح میدهد.
نمونهای از خطا هنگام تماس با API "pubsub.googleapis.com" در صورت فعال نبودن:
{ "reason": "API_DISABLED"
"domain": "googleapis.com"
"metadata": {
"resource": "projects/123",
"service": "pubsub.googleapis.com"
}
}
این پاسخ نشان میدهد که API مربوط به pubsub.googleapis.com فعال نیست.
نمونه خطایی که هنگام تلاش برای ایجاد یک نمونه Spanner در منطقهای که موجودی آن تمام شده است، بازگردانده میشود:
{ "reason": "STOCKOUT"
"domain": "spanner.googleapis.com",
"metadata": {
"availableRegions": "us-central1,us-east2"
}
}
| فیلدها | |
|---|---|
reason | دلیل خطا. این یک مقدار ثابت است که علت تقریبی خطا را مشخص میکند. دلایل خطا در یک دامنه خاص از خطاها منحصر به فرد هستند. این باید حداکثر ۶۳ کاراکتر باشد و با یک عبارت منظم |
domain | گروهبندی منطقی که "دلیل" به آن تعلق دارد. دامنه خطا معمولاً نام سرویس ثبتشده ابزار یا محصولی است که خطا را ایجاد میکند. مثال: "pubsub.googleapis.com". اگر خطا توسط یک زیرساخت مشترک ایجاد شده باشد، دامنه خطا باید یک مقدار منحصر به فرد جهانی باشد که زیرساخت را مشخص میکند. برای زیرساخت API گوگل، دامنه خطا "googleapis.com" است. |
metadata | جزئیات ساختاریافتهی بیشتر در مورد این خطا. کلیدها باید با یک عبارت منظم |
کمک
پیوندهایی به مستندات یا برای انجام یک اقدام خارج از محدوده ارائه میدهد.
برای مثال، اگر بررسی سهمیه با خطایی مبنی بر فعال نشدن سرویس مورد دسترسی توسط پروژه فراخوانی شده، ناموفق باشد، این خطا میتواند شامل یک URL باشد که مستقیماً به مکان مناسب در کنسول توسعهدهنده برای تغییر بخش اشاره میکند.
| فیلدها | |
|---|---|
links[] | آدرسهای اینترنتی (URL) که به اطلاعات اضافی در مورد مدیریت خطای فعلی اشاره میکنند. |
پیوند
یک لینک URL را توصیف میکند.
| فیلدها | |
|---|---|
description | آنچه لینک ارائه میدهد را توصیف میکند. |
url | آدرس اینترنتی (URL) لینک. |
پیام محلیشده
یک پیام خطای محلی ارائه میدهد که بازگشت آن به کاربر ایمن است و میتواند به یک خطای RPC پیوست شود.
| فیلدها | |
|---|---|
locale | زبان محلی مورد استفاده طبق مشخصات تعریف شده در https://www.rfc-editor.org/rfc/bcp/bcp47.txt . مثالها عبارتند از: "en-US"، "fr-CH"، "es-MX" |
message | پیام خطای محلیشده در زبان بالا. |
درخواست اطلاعات
شامل فرادادههایی درباره درخواستی است که کاربران میتوانند هنگام ثبت یک اشکال یا ارائه سایر اشکال بازخورد، آن را پیوست کنند.
| فیلدها | |
|---|---|
request_id | یک رشتهی مبهم که فقط باید توسط سرویسی که آن را تولید میکند تفسیر شود. برای مثال، میتوان از آن برای شناسایی درخواستها در گزارشهای سرویس استفاده کرد. |
serving_data | هر دادهای که برای ارائه این درخواست استفاده شده است. به عنوان مثال، یک ردیابی پشته رمزگذاری شده که میتواند برای اشکالزدایی به ارائه دهنده خدمات ارسال شود. |
وضعیت
نوع Status یک مدل خطای منطقی را تعریف میکند که برای محیطهای برنامهنویسی مختلف، از جمله REST APIها و RPC APIها، مناسب است. این مدل توسط gRPC استفاده میشود. هر پیام Status شامل سه بخش داده است: کد خطا، پیام خطا و جزئیات خطا.
میتوانید اطلاعات بیشتری در مورد این مدل خطا و نحوه کار با آن را در راهنمای طراحی API بیابید.
| فیلدها | |
|---|---|
code | کد وضعیت، که باید یک مقدار شمارشی از |
message | یک پیام خطای مربوط به توسعهدهنده که باید به زبان انگلیسی باشد. هرگونه پیام خطای مربوط به کاربر باید بومیسازی شده و در فیلد |
details[] | فهرستی از پیامهایی که جزئیات خطا را در خود دارند. مجموعهای مشترک از انواع پیامها برای استفاده توسط APIها وجود دارد. |