有人能教我如何使用runquery方法来使用googleclouddatastorerestapi v1执行gqlquery语法吗?我只需要帮助理解rest api的查询结构,而不需要google oauth或设置云数据存储的帮助。我已经包含了一个文档链接,例如下面的gqlquery to run和cloud数据存储结构。
方法:projects.runquery
https://cloud.google.com/datastore/docs/reference/rest/v1/projects/runQuery

Example gqlQuery = ("Select * From Customer")

google数据存储结构示例
   id = "78090499534213120"
   Address = "888 Fake St"
   City = "Fake City"
   FirstName = "Name"
   LastName = "Name"
   State = "CT"

最佳答案

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

其中{your_project_id}可以在项目的云控制台主页上找到,并且是字母数字。
消息的主体将是一个json字符串,其中包含查询的详细信息,因此在您的示例中:
{
 "gqlQuery":{"queryString": "select * from customer"}
}

如果要包含条件,也可以通过使用参数绑定来实现。下面的示例演示如何使用位置绑定来实现此目的:
{
   "gqlQuery":
   {
      "queryString": "select * from Customers where State = @1 AND FirstName = @2",
      "positionalBindings": [
         {"value": {"stringValue": "CT"}}.
         {"value": {"stringValue": "Name"}}
      ]
   }
}

也可以执行命名绑定,而不是位置绑定:
{
   "gqlQuery":
   {
      "queryString": "select * from Customers where State = @State AND FirstName = @FirstName",
      "namedBindings": {
          "State": {"value": {"stringValue": "CT"}},
          "FirstName": {"value": {"stringValue": "Name"}}
      }
   }
}

最后,不建议这样做,因为它可能导致查询注入攻击,您可以通过设置适当的标志在查询字符串本身中包含文本:
{
   "gqlQuery":
   {
      "queryString": "select * from Customers where State = 'CT' AND FirstName = 'Name'",
      "allowLiterals": true
   }
}

10-08 17:12