我正在学习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 API' TableOperation.Insert()
方法成功地使用了C#。由于我可以使用Table API成功创建表和实体,因此我知道我使用的端点是准确的,并确保我从连接字符串中复制/粘贴该元素,并且我知道它与Azure中的数据库匹配。
以下是Azure中数据库的外观:
接下来,本教程让您使用表端点运行查询。这是我开始感到困惑的地方,因为我找不到解释如何获取 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')
这也不起作用。正如本文前面提到的,我尝试将:443
附加到所有测试查询的末尾,但错误响应仍然相同。
现在,我正在使用Postman GETs尝试所有这些。
另外,我确实尝试在Postman中获得这样的令牌:
https://login.microsoftonline.com/{{tenant_id}}/oauth2/token
然后使用Authorization
参数发送GET请求并传递令牌但仍然得到与上面列出的相同的错误。
您知道如何正确构建表端点以成功发送请求并接收oData响应吗?
谢谢。
答案 0 :(得分:2)
原始问题中使用的端点是实际公开我们的SQL API而不是Table API的文档端点。由于表已经过GA,我们不再宣传该端点,而是宣传支持与Azure表存储相同的REST API的表端点。您可以查看cosmos db, generate authentication key on client for Azure Table endpoint详细了解如何与端点通信,您需要哪些标头等等。
请注意,与端点通信的最简单方法是使用Table API SDK之一。 https://docs.microsoft.com/en-us/azure/cosmos-db/table-sdk-dotnet指向我们的.NET SDK,但如果您在该页面左侧查看,您将在目录中看到我们的Java,Python和Node SDK的链接。请注意,这些SDK与用于Azure表存储的SDK相同。另请注意,您可以使用它们提交OData查询。
答案 1 :(得分:1)