Jika permintaan Firestore dalam mode Datastore berhasil, API akan menampilkan kode status 200 OK
HTTP 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 yang lebih spesifik tentang error yang menyebabkan kegagalan.
Bagian selanjutnya dari halaman ini menjelaskan struktur error, menyebutkan kode error tertentu, dan merekomendasikan cara menanganinya.
Berikut ini 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 dalam 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
). Pada error JSON, kode ini muncul
di kolom status
. Di error application/x-protobuf
, letaknya 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 entity Anda untuk mengurangi pertentangan. Untuk permintaan yang merupakan bagian dari commit transactional: Coba kembali seluruh transaksi atau susun entity Anda untuk mengurangi pertentangan. |
ALREADY_EXISTS |
Menunjukkan bahwa permintaan tersebut 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 prakondisi 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 mana 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 memiliki 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. |