Google Cloud CLI menyediakan cara yang mudah untuk mengakses REST API mode Datastore dan mengelola indeks komposit Anda. Namun, Anda dapat langsung mengakses REST API mode Datastore untuk membuat alat sendiri guna mengelola indeks komposit Anda. Misalnya, Anda dapat membuat alat untuk mengotomatiskan penyediaan dan pengelolaan indeks.
Autentikasi dan otorisasi
Untuk mengakses Firestore dalam metode REST API mode Datastore di bawah ini, Anda harus mengautentikasi permintaan dengan memberikan token akses Google OAuth 2.0 dengan salah satu cakupan berikut:
https://www.googleapis.com/auth/datastore
https://www.googleapis.com/auth/cloud-platform
Contoh cURL dan PowerShell di bawah menggunakan perintah gcloud auth print-access-token
untuk mengautentikasi permintaan. Untuk mengetahui informasi
selengkapnya tentang cara mendapatkan token akses, lihat
Menggunakan OAuth 2.0 untuk Mengakses Google API.
Otorisasi
Pengguna, grup, atau akun layanan yang diautentikasi dalam permintaan harus memiliki otorisasi untuk mengakses metode API. Untuk mengizinkan akses ke metode pengindeksan, tetapkan salah satu peran Identity and Access Management (IAM) berikut:
Untuk akses baca dan edit indeks penuh, berikan salah satu peran berikut:
roles/owner
roles/editor
roles/datastore.owner
roles/datastore.indexAdmin
Untuk akses baca indeks saja (dapatkan dan daftar), berikan salah satu peran berikut:
roles/viewer
roles/datastore.user
roles/datastore.viewer
Untuk mengetahui informasi selengkapnya tentang menetapkan peran ini, baca artikel memberikan, mengubah, dan mencabut akses ke resource.
Sebelum memulai
Contoh curl
dan PowerShell di bawah menggunakan Google Cloud CLI (Google Cloud CLI) untuk mengautentikasi permintaan. Untuk menjalankan contoh ini secara lokal, instal dan inisialisasi Google Cloud CLI.
Atau, Anda dapat mengakses gcloud
dan curl
dari Konsol Google Cloud menggunakan Cloud Shell.
Membuat indeks komposit
Untuk membuat indeks komposit baru, gunakan metode projects.indexes.create.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: project ID Anda
- kind: jenis entity yang akan diindeks
- include-ancestors: apakah menyertakan ancestor entity dalam indeks atau tidak untuk mendukung kueri ancestor, baik
NONE
maupunALL_ANCESTORS
- property-name: properti yang akan diindeks, harus menentukan dua atau beberapa properti
- index-direction: tata urutan untuk setiap properti,
ASCENDING
atauDESCENDING
Metode HTTP dan URL:
POST https://datastore.googleapis.com/v1/projects/project-id/indexes
Isi JSON permintaan:
{ "kind": "kind", "ancestor": "include-ancestors", "properties": [ { "name": "property-name", "direction": "index-direction" }, { "name": "property-name", "direction": "index-direction" } ] }
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://datastore.googleapis.com/v1/projects/project-id/indexes"
PowerShell
Simpan isi permintaan dalam file bernama request.json
,
dan jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://datastore.googleapis.com/v1/projects/project-id/indexes" | Select-Object -Expand Content
APIs Explorer
Salin isi permintaan dan buka halaman referensi metode. Panel APIs Explorer akan terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Tempelkan isi permintaan di alat ini, lengkapi kolom lainnya yang wajib diisi, lalu klik Jalankan.
Anda akan melihat respons JSON seperti berikut:
{ "name": "projects/project-id/operations/S01vcFVpSmdBQ0lDDCoDIDgxZGVhZDM0ZDc4MS1jMjJhLWQ1ZTQtYmMyNS1iYjY2NWVlZCQadGx1YWZlZAcSMXJoLXJleGVkbmktbmltZGERClIS", "metadata": { "@type": "type.googleapis.com/google.datastore.admin.v1.IndexOperationMetadata", "common": { "startTime": "2019-12-05T22:27:19.238Z", "operationType": "CREATE_INDEX", "state": "INITIALIZING" }, "indexId": "CICAgJiUpoMK" } }
Mendapatkan status indeks
Mode Datastore memberi setiap indeks ID indeks unik. Anda dapat menggunakan ID indeks ini untuk mendapatkan status dari satu indeks dengan metode projects.indexes.get:
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: project ID Anda
- index-id: ID indeks komposit
Metode HTTP dan URL:
GET https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id"
PowerShell
Jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id" | Select-Object -Expand Content
APIs Explorer
Buka halaman referensi metode. Panel APIs Explorer akan terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
Anda akan melihat respons JSON seperti berikut:
{ "projectId": "project-id", "indexId": "index-id", "kind": "Task", "ancestor": "NONE", "properties": [ { "name": "done", "direction": "ASCENDING" }, { "name": "priority", "direction": "ASCENDING" } ], "state": "READY" }
Status indeks
Lihat status indeks untuk mengetahui informasi progres dan pesan error. Anda tidak dapat menggunakan indeks untuk kueri sampai mencapai status READY
. Kemungkinan status indeks meliputi:
CREATING
: pembuatan indeks sedang berlangsung.ALREADY_EXISTS
: tidak dapat menyelesaikan operasi karena indeks ini sudah ada.ERROR
: pembuatan indeks gagal. Perbaiki data yang menyebabkan error, hapus indeks ini, lalu buat indeks kembali.READY
: pembuatan indeks selesai. Indeks siap digunakan untuk kueri.
Menghapus indeks komposit
Metode HTTP dan URL:
DELETE https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id"
PowerShell
Jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id" | Select-Object -Expand Content
APIs Explorer
Buka halaman referensi metode. Panel APIs Explorer akan terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
Anda akan menerima kode status yang berhasil (2xx), serta respons yang kosong.
Mencantumkan semua indeks komposit
Untuk mencantumkan semua indeks komposit untuk database mode Datastore, gunakan metode projects.indexes.list.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: project ID Anda
Metode HTTP dan URL:
GET https://datastore.googleapis.com/v1/projects/project-id/indexes
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes"
PowerShell
Jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://datastore.googleapis.com/v1/projects/project-id/indexes" | Select-Object -Expand Content
APIs Explorer
Buka halaman referensi metode. Panel APIs Explorer akan terbuka di sisi kanan halaman. Anda bisa berinteraksi dengan alat ini untuk mengirim permintaan. Lengkapi kolom yang wajib diisi, lalu klik Jalankan.
Anda akan melihat respons JSON seperti berikut:
{ "indexes": [ { "projectId": "project-id", "indexId": "CICAgOjXh4EK", "kind": "Task", "ancestor": "NONE", "properties": [ { "name": "done", "direction": "ASCENDING" }, { "name": "priority", "direction": "ASCENDING" } ], "state": "READY" }, { "projectId": "project-id", "indexId": "CICAgNiroIEK", "kind": "Task", "ancestor": "NONE", "properties": [ { "name": "due-date", "direction": "DESCENDING" }, { "name": "priority", "direction": "ASCENDING" } ], "state": "CREATING" } ] }