1

Est-ce que quelqu'un me guiderait à travers la syntaxe sur la façon d'utiliser la méthode runQuery pour préformer un gqlQuery à l'aide de l'API REST Google Cloud Datastore v1. J'ai seulement besoin d'aide pour comprendre la structure de la requête de l'API REST et je n'ai pas besoin d'aide avec Google OAUTH ni de configuration de Cloud Datatore. J'ai inclus un lien vers la documentation, par exemple gqlQuery pour exécuter et la structure Cloud Datastore ci-dessous.API REST Google Cloud Datastore v1 (gqlQuery)

Méthode: projects.runQuery https://cloud.google.com/datastore/docs/reference/rest/v1/projects/runQuery

Example gqlQuery = ("Select * From Customer") 

Exemple Google DataStore Structure

id = "78090499534213120" 
    Address = "888 Fake St" 
    City = "Fake City" 
    FirstName = "Name" 
    LastName = "Name" 
    State = "CT" 

Répondre

0
POST https://datastore.googleapis.com/v1/projects/{YOUR_PROJECT_ID}:runQuery?key={YOUR_API_KEY} 

Où {} YOUR_PROJECT_ID se trouve sur la page d'accueil Console Cloud pour votre projet et alphanumérique.

Le corps du message sera une chaîne JSON avec les détails de la requête, donc dans votre cas:

{ 
"gqlQuery":{"queryString": "select * from customer"} 
} 

Si vous souhaitez inclure conditionals, vous pouvez le faire aussi bien en utilisant la liaison des paramètres . L'exemple ci-dessous montre comment utiliser la liaison de position pour y parvenir:

{ 
    "gqlQuery": 
    { 
     "queryString": "select * from Customers where State = @1 AND FirstName = @2", 
     "positionalBindings": [ 
     {"value": {"stringValue": "CT"}}. 
     {"value": {"stringValue": "Name"}} 
     ] 
    } 
} 

au lieu de se lier de position, vous pouvez également faire des liaisons nommées:

{ 
    "gqlQuery": 
    { 
     "queryString": "select * from Customers where State = @State AND FirstName = @FirstName", 
     "namedBindings": { 
      "State": {"value": {"stringValue": "CT"}}, 
      "FirstName": {"value": {"stringValue": "Name"}} 
     } 
    } 
} 

Enfin, et pas recommandé car il peut conduire Pour interroger les attaques par injection, vous pouvez inclure des littéraux dans la chaîne de requête elle-même en définissant le drapeau approprié:

{ 
    "gqlQuery": 
    { 
     "queryString": "select * from Customers where State = 'CT' AND FirstName = 'Name'", 
     "allowLiterals": true 
    } 
} 
0

obtenir une réponse appropriée lorsque vous faites cette demande? Je reçois la réponse suivante 200, mais ne vois pas de mes lignes de données attendues

{ "lot": { "entityResultType": "PROJECTION", "endCursor": "CgA =", "moreResults": "NO_MORE_RESULTS" } }