有人能教我如何使用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
}
}