Indeks
Kode
Kode error kanonis pada gRPC API.
Terkadang beberapa kode error dapat terjadi. Layanan seharusnya menampilkan kode error paling spesifik yang berlaku. Misalnya, lebih memilih menampilkan OUT_OF_RANGE daripada FAILED_PRECONDITION jika kedua kode berlaku. Demikian pula, untuk lebih memilih menampilkan NOT_FOUND atau ALREADY_EXISTS daripada FAILED_PRECONDITION.
| Enum | |
|---|---|
OK |
Bukan error: ditampilkan jika berhasil Pemetaan HTTP: 200 OK |
CANCELLED |
Operasi dibatalkan, biasanya oleh pemanggil. Pemetaan HTTP: 499 Client Closed Request |
UNKNOWN |
Error tidak diketahui. Misalnya, error ini dapat ditampilkan jika nilai Pemetaan HTTP: Error Server Internal 500 |
INVALID_ARGUMENT |
Klien menetapkan argumen yang tidak valid. Perhatikan bahwa ini berbeda dengan Pemetaan HTTP: 400 Permintaan Tidak Valid |
DEADLINE_EXCEEDED |
Batas waktu berakhir sebelum operasi selesai. Untuk operasi yang mengubah keadaan sistem, error ini mungkin ditampilkan, bahkan jika, operasi tersebut telah selesai. Sebagai contoh, respons berhasil dari suatu server dapat tertunda selama waktu yang cukup lama hingga tenggat waktu berakhir. Pemetaan HTTP: 504 Gateway Timeout |
NOT_FOUND |
Beberapa entity yang diminta (misalnya, file atau direktori) tidak ditemukan. Catatan bagi developer server: apabila suatu permintaan ditolak pada seluruh kelas pengguna, seperti peluncuran bertahap, atau daftar yang diberi akses, Pemetaan HTTP: 404 Not Found |
ALREADY_EXISTS |
Entitas yang coba dibuat oleh klien (misalnya, file atau direktori) sudah ada. Pemetaan HTTP: 409 Conflict |
PERMISSION_DENIED |
Pemanggil tidak memiliki izin untuk menjalankan operasi yang ditentukan. Pemetaan HTTP: 403 Forbidden |
UNAUTHENTICATED |
Permintaan tidak memiliki kredensial autentikasi operasi yang valid. Pemetaan HTTP: 401 Tidak Sah |
RESOURCE_EXHAUSTED |
Beberapa resource telah habis, kemungkinan adalah kuota per pengguna, atau kemungkinan seluruh sistem file kehabisan ruang. Pemetaan HTTP: 429 Too Many Requests |
FAILED_PRECONDITION |
Operasi tersebut ditolak karena sistem tidak dalam keadaan dibutuhkan untuk menjalankan operasi. Misalnya, direktori yang akan dihapus tidak kosong, operasi rmdir diterapkan pada non-direktori, dll. Pelaksana layanan dapat menggunakan panduan berikut untuk menentukan manakah yang paling sesuai di antara Pemetaan HTTP: 400 Permintaan Tidak Valid |
ABORTED |
Operasi dibatalkan, umumnya karena masalah konkurensi seperti kegagalan pemeriksaan pengurut atau pembatalan transaksi. Lihat panduan di atas untuk menentukan manakah yang sesuai antara Pemetaan HTTP: 409 Conflict |
OUT_OF_RANGE |
Upaya operasi dilakukan melampaui rentang yang valid. Mis., mencari tahu atau membaca melampaui akhir file. Tidak seperti Terdapat sedikit tumpang-tindih antara Pemetaan HTTP: 400 Permintaan Tidak Valid |
UNIMPLEMENTED |
Operasi tidak diterapkan atau tidak didukung/diaktifkan dalam layanan ini. Pemetaan HTTP: 501 Not Implemented |
INTERNAL |
Error internal. Artinya beberapa invarian yang diperlukan oleh sistem pokok telah rusak. Kode error ini disediakan untuk error yang bersifat serius. Pemetaan HTTP: Error Server Internal 500 |
UNAVAILABLE |
Saat ini layanan tidak tersedia. Kemungkinan besar ini hanya kondisi sementara, yang dapat diperbaiki dengan mencoba kembali menggunakan backoff. Lihat panduan di atas untuk menentukan manakah yang sesuai antara Pemetaan HTTP: 503 Layanan Tidak Tersedia |
DATA_LOSS |
Data hilang atau rusak yang tidak dapat dipulihkan. Pemetaan HTTP: Error Server Internal 500 |
Status
Jenis Status menjelaskan model error logis yang cocok untuk berbagai lingkungan pemrograman, termasuk REST API dan RPC API. Ini digunakan oleh gRPC. Model error dirancang untuk menjadi:
- Mudah untuk digunakan dan dimengerti oleh sebagian besar pengguna
- Cukup fleksibel untuk memenuhi kebutuhan tak terduga
Ringkasan
Pesan Status berisi tiga bagian data: kode error, pesan error, dan detail error. Kode error harus berupa nilai enum dari google.rpc.Code, tetapi kode error dapat menerima kode error tambahan jika diperlukan. Pesan error harus berupa pesan berbahasa Inggris yang membantu developer memahami dan mengatasi error. Jika perlu terjemahan pesan error yang ditampilkan ke pengguna, letakkan pesan yang diterjemahkan dalam detail error atau terjemahkan di klien. Detail error opsional mungkin berisi informasi arbitrer tentang error tersebut. Ada satu set jenis detail error yang telah ditentukan dalam paket google.rpc yang dapat digunakan untuk kondisi error umum.
Pemetaan bahasa
Pesan Status merupakan representasi logis dari model error, tetapi pesan tersebut belum tentu merupakan format wire yang sebenarnya. Saat pesan Status ditampilkan di library klien dan protokol wire yang berbeda, maka pesan tersebut dapat dipetakan secara berbeda. Sebagai contoh, kemungkinan akan dipetakan ke beberapa pengecualian di Java, tetapi lebih mungkin dipetakan ke beberapa kode error dalam C.
Penggunaan lain
Model error dan pesan Status dapat digunakan dalam berbagai lingkungan, baik dengan atau tanpa API, untuk memberikan pengalaman developer yang konsisten di berbagai lingkungan.
Contoh penggunaan model error ini termasuk:
Error sebagian. Jika suatu layanan perlu menampilkan error sebagian kepada klien, layanan tersebut dapat menyematkan
Statusdalam respons normal untuk menunjukkan error sebagian.Error alur kerja. Alur kerja biasanya memiliki beberapa langkah. Setiap langkah mungkin memiliki pesan
Statusuntuk pelaporan error.Operasi batch Jika klien menggunakan permintaan batch dan respons batch, pesan
Statusharus digunakan secara langsung di dalam respons batch, satu untuk masing-masing sub-respons error.Operasi asinkron Jika panggilan API menyematkan hasil operasi asinkron dalam responsnya, status operasi tersebut harus diwakili secara langsung menggunakan pesan
Status.Logging. Jika beberapa error API disimpan dalam log,
Statuspesan dapat digunakan secara langsung setelah penghapusan yang diperlukan untuk alasan keamanan/privasi.
| Kolom | |
|---|---|
code |
Kode status, harus berupa nilai enum dari |
message |
Pesan error yang ditampilkan ke developer dan seharusnya dalam bahasa Inggris. Setiap pesan error yang ditampilkan kepada pengguna harus dilokalkan dan dikirim di kolom |
details[] |
Daftar pesan yang membawa detail error. Ada seperangkat jenis pesan umum untuk digunakan API. |