Google Cloud CLI offre un modo pratico per accedere l'API REST in modalità Datastore e gestire gli indici composti. Tuttavia, puoi accedere direttamente all'API REST in modalità Datastore per creare strumenti personalizzati per la gestione degli indici composti. Ad esempio, puoi creare strumenti per automatizzare il provisioning e la gestione degli indici.
Autenticazione e autorizzazione
Per accedere ai metodi dell'API REST di Firestore in modalità Datastore riportati di seguito, devi autenticare la richiesta fornendo un token di accesso Google OAuth 2.0 con uno dei seguenti ambiti:
https://www.googleapis.com/auth/datastore
https://www.googleapis.com/auth/cloud-platform
Gli esempi di cURL e PowerShell riportati di seguito utilizzano il comando gcloud auth print-access-token
per autenticare le richieste. Per ulteriori informazioni
informazioni su come ottenere un token di accesso, consulta
Utilizzo di OAuth 2.0 per accedere alle API di Google.
Autorizzazione
L'utente, il gruppo o l'account di servizio autenticato nella richiesta devono disporre dell'autorizzazione per accedere ai metodi dell'API. Per autorizzare l'accesso ai metodi di indicizzazione, assegna uno dei seguenti ruoli IAM (Identity and Access Management):
Per l'accesso completo in lettura e modifica all'indice, concedi uno di questi ruoli:
roles/owner
roles/editor
roles/datastore.owner
roles/datastore.indexAdmin
Per solo l'accesso in lettura all'indice (get e list), concedi uno di questi ruoli:
roles/viewer
roles/datastore.user
roles/datastore.viewer
Per ulteriori informazioni sull'assegnazione di questi ruoli, consulta concedere, modificare e revocare l'accesso alle risorse.
Prima di iniziare
Gli esempi curl
e PowerShell riportati di seguito utilizzano Google Cloud CLI
(Google Cloud CLI) per autenticare le richieste. Per eseguire questi esempi localmente,
installa e inizializza Google Cloud CLI.
In alternativa, puoi accedere a gcloud
e curl
dalla console Google Cloud utilizzando Cloud Shell.
Creazione di un indice composto
Per creare un nuovo indice composto, utilizza il metodo projects.indexes.create.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-id: il tuo ID progetto
- kind: il tipo di entità da indicizzare
- include-ancestors: se includere o meno i predecessori dell'entità nell'indice
per supportare le query predecessori,
NONE
oALL_ANCESTORS
- property-name: la proprietà da indicizzare deve specificare due o più proprietà
- index-direction: l'ordinamento per ogni proprietà,
ASCENDING
oDESCENDING
Metodo HTTP e URL:
POST https://datastore.googleapis.com/v1/projects/project-id/indexes
Corpo JSON della richiesta:
{ "kind": "kind", "ancestor": "include-ancestors", "properties": [ { "name": "property-name", "direction": "index-direction" }, { "name": "property-name", "direction": "index-direction" } ] }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato request.json
.
ed esegui questo comando:
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
Salva il corpo della richiesta in un file denominato request.json
.
ed esegui questo comando:
$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
Explorer API
Copia il corpo della richiesta e apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Incolla il corpo della richiesta in questo strumento, compila tutti gli altri campi obbligatori e fai clic su Esegui.
Dovresti ricevere una risposta JSON simile alla seguente:
{ "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" } }
Recupero dello stato dell'indice in corso...
La modalità Datastore assegna a ogni indice un ID univoco. Puoi utilizzare questo ID indice per ottenere lo stato di un singolo indice con Metodo projects.indexes.get:
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-id: il tuo ID progetto
- index-id: un ID indice composto
Metodo HTTP e URL:
GET https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id"
PowerShell
Esegui questo comando:
$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
Explorer API
Apri l'app pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Compila tutti i campi obbligatori e fai clic su Esegui.
Dovresti ricevere una risposta JSON simile alla seguente:
{ "projectId": "project-id", "indexId": "index-id", "kind": "Task", "ancestor": "NONE", "properties": [ { "name": "done", "direction": "ASCENDING" }, { "name": "priority", "direction": "ASCENDING" } ], "state": "READY" }
Stato dell'indice
Consulta lo stato dell'indice per informazioni sull'avanzamento e su messaggi di errore. Non puoi utilizzare un indice per le query finché non raggiunge lo stato
READY
. Gli stati possibili dell'indice sono:
CREATING
: creazione dell'indice in corso.ALREADY_EXISTS
: impossibile completare l'operazione perché questo indice esiste già.ERROR
: creazione dell'indice non riuscita. Correggi i dati che hanno causato l'errore, elimina l'indice e poi crea di nuovo l'indice.READY
: creazione dell'indice completata. L'indice è pronto per essere utilizzato per le query.
Eliminazione di un indice composto
Metodo HTTP e URL:
DELETE https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes/index-id"
PowerShell
Esegui questo comando:
$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
Explorer API
Apri l'app pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Compila tutti i campi obbligatori e fai clic su Esegui.
Dovresti ricevere un codice di stato di operazione riuscita (2xx) e una risposta vuota.
Elenco di tutti gli indici composti
per elencare tutti gli indici composti per l'utilizzo dei database in modalità Datastore il metodo projects.indexes.list.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- project-id: il tuo ID progetto
Metodo HTTP e URL:
GET https://datastore.googleapis.com/v1/projects/project-id/indexes
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://datastore.googleapis.com/v1/projects/project-id/indexes"
PowerShell
Esegui questo comando:
$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
Explorer API
Apri l'app pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Compila i campi obbligatori e fai clic su Esegui.
Dovresti ricevere una risposta JSON simile alla seguente:
{ "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" } ] }