Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 使用oData访问Cosmos DB表端点_Rest_Azure_Odata_Azure Cosmosdb - Fatal编程技术网

Rest 使用oData访问Cosmos DB表端点

Rest 使用oData访问Cosmos DB表端点,rest,azure,odata,azure-cosmosdb,Rest,Azure,Odata,Azure Cosmosdb,我正在学习Cosmos DB,并在Microsoft Cosmos DB文档网站上浏览以下教程: 不幸的是,我被困在试图访问我创建的实体的位置。每当我运行GET请求以接收oData响应时,我都会收到以下错误消息: { "code": "BadRequest", "message": "Request url is invalid.\r\nActivityId: e7df6ff2-eaea-4d10-8823-ff0cee3a62c2" } 我有一个类似这样的端点(请注意,我用abc替

我正在学习Cosmos DB,并在Microsoft Cosmos DB文档网站上浏览以下教程:

不幸的是,我被困在试图访问我创建的实体的位置。每当我运行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

根据教程,我应该创建一个数据库、一个表,并添加三个实体。我成功地将C#与表API的
TableOperation.Insert()
方法结合使用。由于我可以使用表API成功创建表和实体,因此我知道我使用的端点是准确的,并确保我从连接字符串中复制/粘贴了该元素,并且我知道它与Azure中的数据库匹配

以下是Azure中数据库的外观:

接下来,本教程将使用表端点运行查询。这里是我开始感到困惑的地方,因为我找不到解释如何获取表端点的文档

以下是本教程显示的示例:
https:///People(PartitionKey='Harp',RowKey='Walter')

所以我想,试试这个:
https://abc.documents.azure.com/People(PartitionKey='Harp',RowKey='Walter')

这不起作用,所以我想可能还需要指定数据库(如上图所示,TableDB):
https://abc.documents.azure.com/TablesDB/People(PartitionKey='Harp',RowKey='Walter')

这也行不通。正如本文前面提到的,我确实尝试在所有测试查询的末尾追加
:443
,但错误响应仍然相同

现在,我正在和邮递员一起尝试这一切

另外,我也试过在《邮递员》中得到这样一个令牌:
https://login.microsoftonline.com/{{tenant_id}/oauth2/token

然后使用
Authorization
参数发送GET请求并传递令牌,但仍然会得到与上面列出的相同的错误

您知道如何正确构造表端点以成功发送请求并接收oData响应吗

谢谢。

我正在使用基于
PartitionKey
RowKey
从表中查询实体,在我这方面效果很好,请参考它

请求和答复:

表中的实体:


原始问题中使用的端点是一个文档端点,它实际上公开了我们的SQL API,而不是表API。由于表已经过时,我们不再宣传该端点,而是宣传支持与Azure表存储相同REST API的表端点。您可以查看详细的演练,了解如何与端点对话、需要哪些标题等


请注意,与端点对话的最简单方法是只使用表API SDK之一。指向我们的.NET SDK,但如果您在该页面的左侧查看,您将在目录中看到Java、Python和节点SDK的链接。请注意,这些SDK与用于Azure表存储的SDK相同。还请注意,您可以使用它们提交OData查询。

我刚刚运行了与您相同的代码,但针对我的表,如下所示:
https://abc.documents.azure.com/dbs/TablesDB/colls/People
。以下是json响应:
{“code”:“Unauthorized”,“message”:“缺少所需的标头授权。请确保传递了有效的授权令牌。\r\n活动ID:a28dcb9f-b0fe-4ca5-85d4-6ca195eabc0d”}
请确保提供有效的授权令牌并设置x-ms-date标头,显示用于执行查询操作的常用请求头,请参考。@FredHan MSFT在另一个注释中,与每个属性关联的“$t”值表示什么?感谢您提供此文档!