Azure CosmosDB REST创建文档时出错

Azure CosmosDB REST创建文档时出错,azure,azure-cosmosdb,Azure,Azure Cosmosdb,尝试使用REST API创建文档时出现以下错误: The input content is invalid because the required properties - 'id; ' - are missing 在各种SDK中,有一个可选参数要包括,disableAutomaticIdGeneration,如果设置为true,则如果未提供ID,该参数将拒绝带有此错误的请求。我提出了一个非常简单的REST请求,所以我自己并没有添加这个参数(我甚至不知道我会添加哪个头——大概是一个头——因为

尝试使用REST API创建文档时出现以下错误:

The input content is invalid because the required properties - 'id; ' - are missing
在各种SDK中,有一个可选参数要包括,
disableAutomaticIdGeneration
,如果设置为
true
,则如果未提供ID,该参数将拒绝带有此错误的请求。我提出了一个非常简单的REST请求,所以我自己并没有添加这个参数(我甚至不知道我会添加哪个头——大概是一个头——因为RESTAPI的文档没有涵盖它)

唯一需要注意的是集合有一个已定义的分区键。我找不到任何文档表明,如果定义了分区键,则需要一个ID,但事实似乎就是这样

<> P>除非有人能回答为什么会发生这种情况,我会考虑我的“它必须被定义,如果定义了分区键”最终回答答案。 下面的请求(不是裸HTTP,而是内容):

还有几个问题需要解决

文档中指出,
id
是必需的,因此可能门户实际上是在浏览器端创建它,然后将其包含在引擎盖下的请求中,但如果是这样,为什么SDK中存在
disableAutomaticGeneration
选项

此外,同样的文件说明(突出显示是我的):

标识文档的唯一ID,即两个文档不应共享同一ID。ID不得超过255个字符创建文档时,在不指定ID值的情况下自动添加ID字段。但是,始终可以通过在请求正文中为ID值指定自定义值来更新ID值


在粗体部分,似乎需要键
id
,但我可以传递
null
或空字符串吗?但是,我尝试了这两种方法,两次都出现了错误(一次说不允许使用
null
,另一次说字符串不能为空)。

当前SDK自动生成缺少的
id
s作为
Guid
值。Azure门户使用JS SDK,这就是为什么如果不添加它,您会看到为您创建
id
的门户体验

REST API上的文档似乎有误导性,需要根据您共享的内容进行调整,因为REST API不会自动生成
id
,但会验证它是否在有效负载中


总之,如果您正在实现自己的REST客户端,您可以添加自己的自动生成逻辑客户端(就像SDK一样),REST API的必要条件是它包含在有效负载中。

感谢您的回答!
{
    "headers": {
        "content-type": "application/json",
        "x-ms-version": "2017-02-22",
        "x-ms-date": "Mon, 25 Mar 2019 17:57:03 GMT"
    },
    "body": {
        "data": "myData",
        // "id": "some_id" //I don't want to do this because I want Cosmos to auto-generate this like when I create a document in the Portal!
    },
    "method": "post",
    "url": "https://my-database-server.documents.azure.com/dbs/MyDatabase/colls/MyCollection/docs"
}