使用 oData 访问 Cosmos DB Table 终结点
Access the Cosmos DB Table Endpoint using oData
我正在学习 Cosmos DB 并正在浏览 Microsoft Cosmos DB 文档站点上的以下教程:
https://docs.microsoft.com/en-us/azure/cosmos-db/tutorial-query-table
不幸的是,我在尝试访问我创建的实体时卡住了。每当我 运行 GET 请求接收 oData 响应时,我都会收到以下错误消息:
{
"code": "BadRequest",
"message": "Request url is invalid.\r\nActivityId: e7df6ff2-eaea-4d10-8823-ff0cee3a62c2"
}
我有一个看起来像这样的端点(请注意,我用 abc
替换了我的实际 Cosmos 帐户):
https://abc.documents.azure.com
我还尝试使用它来启动我的 oData 查询:
https://abc.documents.azure.com:443
按照教程,我应该创建一个数据库,一个table,并添加三个实体。我使用 C# 和 Table API 的 TableOperation.Insert()
方法成功地做到了这一点。由于我可以使用 Table API 成功创建 table 和实体,我知道我使用的端点是准确的,并确保我 copied/pasted 来自连接字符串的元素我知道它与 Azure 中的数据库匹配。
Azure 中的数据库如下所示:
接下来,本教程为您提供了 运行 具有 table 端点的查询。这是我开始感到困惑的地方,因为我找不到解释如何获取 Table 的 端点的文档。
这里是教程展示的例子:
https://<mytableendpoint>/People(PartitionKey='Harp',RowKey='Walter')
所以我想,试试这个:
https://abc.documents.azure.com/People(PartitionKey='Harp',RowKey='Walter')
那没有用,所以我想也许我还需要指定数据库(TablesDB,如上图所示):
https://abc.documents.azure.com/TablesDB/People(PartitionKey='Harp',RowKey='Walter')
那也不行。如前文所述 post,我确实尝试将 :443
附加到我所有测试查询的末尾,但错误响应仍然相同。
现在,我正在使用 Postman GET 尝试所有这些。
此外,我确实尝试在 Postman 中获取这样的令牌:
https://login.microsoftonline.com/{{tenant_id}}/oauth2/token
然后使用 Authorization
参数发送 GET 请求并传递令牌,但仍然得到与上面列出的相同的错误。
你知道我如何正确构建 table 端点 以成功发送请求并接收 oData 响应吗?
谢谢。
我正在使用 this API 基于 PartitionKey
和 RowKey
从 table 查询一个实体,它在我这边工作正常,请参考它。
请求和响应:
table中的实体:
原始问题中使用的端点是一个文档端点,它实际上公开了我们的 SQL API 而不是我们的 Table API。由于 Table 已正式发布,我们不再公布该端点,而是公布支持与 Azure Table 存储相同的 REST API 的 table 端点。您可以查看 cosmos db, generate authentication key on client for Azure Table endpoint 以详细了解如何与端点通信、headers 您需要什么等。
请注意,与端点通信的最简单方法是仅使用 Table API SDK 之一。 https://docs.microsoft.com/en-us/azure/cosmos-db/table-sdk-dotnet 指向我们的 .NET SDK,但如果您在该页面的左侧查看,您将在 table 的内容链接中看到我们的 Java、Python 和 Node SDK以及。请注意,这些 SDK 与用于 Azure Table 存储的相同。另请注意,您可以使用它们提交 OData 查询。
我正在学习 Cosmos DB 并正在浏览 Microsoft Cosmos DB 文档站点上的以下教程:
https://docs.microsoft.com/en-us/azure/cosmos-db/tutorial-query-table
不幸的是,我在尝试访问我创建的实体时卡住了。每当我 运行 GET 请求接收 oData 响应时,我都会收到以下错误消息:
{
"code": "BadRequest",
"message": "Request url is invalid.\r\nActivityId: e7df6ff2-eaea-4d10-8823-ff0cee3a62c2"
}
我有一个看起来像这样的端点(请注意,我用 abc
替换了我的实际 Cosmos 帐户):
https://abc.documents.azure.com
我还尝试使用它来启动我的 oData 查询:
https://abc.documents.azure.com:443
按照教程,我应该创建一个数据库,一个table,并添加三个实体。我使用 C# 和 Table API 的 TableOperation.Insert()
方法成功地做到了这一点。由于我可以使用 Table API 成功创建 table 和实体,我知道我使用的端点是准确的,并确保我 copied/pasted 来自连接字符串的元素我知道它与 Azure 中的数据库匹配。
Azure 中的数据库如下所示:
这里是教程展示的例子:
https://<mytableendpoint>/People(PartitionKey='Harp',RowKey='Walter')
所以我想,试试这个:
https://abc.documents.azure.com/People(PartitionKey='Harp',RowKey='Walter')
那没有用,所以我想也许我还需要指定数据库(TablesDB,如上图所示):
https://abc.documents.azure.com/TablesDB/People(PartitionKey='Harp',RowKey='Walter')
那也不行。如前文所述 post,我确实尝试将 :443
附加到我所有测试查询的末尾,但错误响应仍然相同。
现在,我正在使用 Postman GET 尝试所有这些。
此外,我确实尝试在 Postman 中获取这样的令牌:
https://login.microsoftonline.com/{{tenant_id}}/oauth2/token
然后使用 Authorization
参数发送 GET 请求并传递令牌,但仍然得到与上面列出的相同的错误。
你知道我如何正确构建 table 端点 以成功发送请求并接收 oData 响应吗?
谢谢。
我正在使用 this API 基于 PartitionKey
和 RowKey
从 table 查询一个实体,它在我这边工作正常,请参考它。
请求和响应:
table中的实体:
原始问题中使用的端点是一个文档端点,它实际上公开了我们的 SQL API 而不是我们的 Table API。由于 Table 已正式发布,我们不再公布该端点,而是公布支持与 Azure Table 存储相同的 REST API 的 table 端点。您可以查看 cosmos db, generate authentication key on client for Azure Table endpoint 以详细了解如何与端点通信、headers 您需要什么等。
请注意,与端点通信的最简单方法是仅使用 Table API SDK 之一。 https://docs.microsoft.com/en-us/azure/cosmos-db/table-sdk-dotnet 指向我们的 .NET SDK,但如果您在该页面的左侧查看,您将在 table 的内容链接中看到我们的 Java、Python 和 Node SDK以及。请注意,这些 SDK 与用于 Azure Table 存储的相同。另请注意,您可以使用它们提交 OData 查询。