首页 > 解决方案 > 获取“您发送的正文包含未知密钥。” 尝试创建内容丰富的条目时

问题描述

我创建了一个名为“用户”的内容模型,其中包含两个字段:

当我尝试使用以下参数通过内容管理 API 创建新条目时:

Headers:
X-Contentful-Content-Type : user
Content-Type : application/vnd.contentful.management.v1+json

Method
PUT

URL
https://api.contentful.com/spaces/qilo7tiaixh8/environments/entries/

Body:    
    {
        "id":"whatever",
        "email": "peter@petervukovic.com"
    }

我收到以下错误:

    {
        "requestId": "2849bbcd7ee0486bb36b47927071f37b",
        "sys": {
            "type": "Error",
            "id": "UnknownKey"
        },
        "message": "The body you sent contains an unknown key.",
        "details": {
            "errors": [
                {
                    "keys": [
                        "id",
                        "email"
                    ]
                }
            ]
        }
    }

我不知道我做错了什么,因为官方文档中的示例没有帮助(他们假设我没有使用多语言内容)并且没有调试提示。

标签: contentfulcontentful-managementcontentful-api

解决方案


内容丰富的 DevRel 在这里。

我刚刚尝试过,下面的 CURL 适用于user定义title字段的内容类型。

curl --include \
     --request PUT \
     --header 'Authorization: Bearer ...' \
     --header 'Content-Type: application/vnd.contentful.management.v1+json' \
     --header 'X-Contentful-Content-Type: user' \
     --data-binary '{
       "fields": {
         "title": {
           "en-US": "Hello Test"
         }
       }
     }' \
     https://api.contentful.com/spaces/.../environments/master/entries/\test-1

您似乎缺少fields在有效负载中包含该属性。关于本地化部分,我认为需要为您的字段值提供语言环境。所以在我的例子中,en-US是默认值,它是必需的。

对于使用PUT,您必须定义或提出一个条目 id

要在不传递和定义 id 的情况下创建条目,请查看Entry collection中的文档。

curl --include \
     --request POST \
     --header 'Authorization: Bearer ...' \
     --header 'Content-Type: application/vnd.contentful.management.v1+json' \
     --header 'X-Contentful-Content-Type: user' \
     --data-binary '{
       "fields": {
         "title": {
           "en-US": "Hello Test 2"
         }
       }
     }' \
     https://api.contentful.com/spaces/.../environments/master/entries/

推荐阅读