Jika permintaan Firestore dalam mode Datastore berhasil, API akan menampilkan kode status HTTP
200 OK
beserta data yang diminta dalam isi respons.
Jika permintaan gagal, Datastore API akan menampilkan kode status HTTP
4xx
atau 5xx
yang secara umum mengidentifikasi kegagalan serta
respons yang memberikan informasi lebih spesifik tentang error yang menyebabkan
kegagalan.
Bagian lain dari halaman ini menjelaskan struktur error, menghitung kode error tertentu, dan merekomendasikan cara menanganinya.
Berikut adalah struktur respons error untuk permintaan JSON:
{
"error": {
"code": "integer",
"message": "string",
"status": "string"
}
}
Objek respons berisi satu kolom error
yang nilainya berisi elemen berikut:
Elemen | Deskripsi |
---|---|
code |
Kode status HTTP yang secara umum mengidentifikasi kegagalan permintaan. |
message |
Informasi spesifik tentang kegagalan permintaan. |
status |
Kode error kanonis (google.rpc.Code ) untuk Google API. Kode yang mungkin ditampilkan oleh Datastore API tercantum di Kode Error. |
Berikut adalah contoh respons error untuk permintaan JSON:
{
"error": {
"code": 400,
"message": "Key path is incomplete: [Person: null]",
"status": "INVALID_ARGUMENT"
}
}
Jika permintaan yang dibuat dengan jenis konten application/x-protobuf
menghasilkan error, permintaan tersebut akan menampilkan pesan google.rpc.Status
serial sebagai payload.
Kode Error
Cara yang direkomendasikan untuk mengklasifikasikan error adalah memeriksa nilai
kode error kanonis (google.rpc.Code
). Dalam error JSON, kode ini muncul
di kolom status
. Pada error application/x-protobuf
, nilai ini ada di kolom
code
.
Kode Error Kanonis | Deskripsi | Tindakan yang Disarankan |
---|---|---|
ABORTED |
Menunjukkan bahwa permintaan bertentangan dengan permintaan lain. | Untuk commit non-transaksional: Coba lagi permintaan atau susun ulang entitas Anda untuk mengurangi pertentangan. Untuk permintaan yang merupakan bagian dari commit transaksional: Coba lagi seluruh transaksi atau susun ulang entitas Anda untuk mengurangi pertentangan. |
ALREADY_EXISTS |
Menunjukkan bahwa permintaan mencoba memasukkan entitas yang sudah ada. | Jangan mencoba lagi tanpa memperbaiki masalah. |
DEADLINE_EXCEEDED |
Batas waktu terlampaui di server. | Coba lagi menggunakan backoff eksponensial. |
FAILED_PRECONDITION |
Menunjukkan bahwa prasyarat untuk permintaan tidak terpenuhi. Kolom pesan dalam respons error memberikan informasi tentang prasyarat yang gagal. Salah satu kemungkinan penyebabnya adalah menjalankan kueri yang memerlukan indeks yang belum ditentukan. | Jangan mencoba lagi tanpa memperbaiki masalah. |
INTERNAL |
Server menampilkan error. | Jangan mencoba lagi permintaan ini lebih dari sekali. |
INVALID_ARGUMENT |
Menunjukkan bahwa parameter permintaan memiliki nilai yang tidak valid. Kolom pesan dalam respons error memberikan informasi tentang nilai yang tidak valid. | Jangan mencoba lagi tanpa memperbaiki masalah. |
NOT_FOUND |
Menunjukkan bahwa permintaan tersebut mencoba memperbarui entity yang tidak ada. | Jangan mencoba lagi tanpa memperbaiki masalah. |
PERMISSION_DENIED |
Menunjukkan bahwa pengguna tidak diberi otorisasi untuk membuat permintaan. | Jangan mencoba lagi tanpa memperbaiki masalah. |
RESOURCE_EXHAUSTED |
Menunjukkan bahwa project melampaui kuota atau kapasitas region/multi-region. | Verifikasi bahwa Anda tidak melebihi kuota project. Jika Anda melebihi kuota project, jangan mencoba lagi tanpa memperbaiki masalah. Jika tidak, coba lagi dengan backoff eksponensial. |
UNAUTHENTICATED |
Menunjukkan bahwa permintaan tidak memiliki kredensial autentikasi yang valid. | Jangan mencoba lagi tanpa memperbaiki masalah. |
UNAVAILABLE |
Server menampilkan error. | Coba lagi menggunakan backoff eksponensial. |