【问题标题】:Updating a Contentful entry更新内容条目
【发布时间】:2017-07-14 05:31:03
【问题描述】:

我在尝试使用 Javascript 中的典型 http 请求更新内容条目时遇到了障碍;我收到错误代码“VersionMismatch”,根据文档,这意味着:

当您尝试更新现有资产时会发生此错误, 条目或内容类型,并且您没有指定当前版本 对象或指定过时的版本。

但是,我已根据文档使用“X-Contentful-Version”标头参数指定条目的当前版本,并使用“entry.sys.revision”中的动态属性值作为参数值(以及硬编码当前版本,加上一堆不同的数字,但我总是收到相同的错误)。 This post 报告了完全相同的问题,但似乎通过添加此标头参数解决了。

这是我当前的代码,它也使用 Contentful API 从我的 Contentful 空间中检索条目,但由于特定要求,我不得不使用纯 Javascript 将数据放回:

var client = contentful.createClient(
    {
        space: space_id,
        accessToken: client_token
    }
);

client.getEntry(entry_id).then((entry) => entry).then(function(entry) {

    // update values of entry
    entry.fields.title = "Testing";

    // post data to contentful API
    var request = new XMLHttpRequest();
        request.open('PUT', 'https://api.contentful.com/spaces/' + space_id + '/entries/' + entry_id);
        request.setRequestHeader('Authorization', 'Bearer my_access_token');
        request.setRequestHeader('Content-Type', 'application/vnd.contentful.management.v1+json');
        request.setRequestHeader('X-Contentful-Content-Type', entry.sys.contentType.sys.id);

        // setting the 'X-Contentful-Version' header with current/soon to be old version
        request.setRequestHeader('X-Contentful-Version', entry.sys.revision);

    // convert entry object to JSON before sending
    var body = JSON.stringify({fields: entry.fields});

    request.send(body);
});

【问题讨论】:

    标签: contentful contentful-management


    【解决方案1】:

    这里是内容丰富的开发者。

    看起来您使用 Contentful Delivery SDK 获取内容,然后尝试使用该数据更新内容。这是行不通的。相反,我建议使用Contentful Management SDK,它将为您处理所有版本控制标头。

    【讨论】:

    • 我在这里谷歌搜索如何创建内容。把这个链接留在这里,希望它能节省我大约 45 分钟的谷歌搜索时间:contentful.github.io/contentful-management.js/…
    • 在这里呆了 14 个小时以上。筛选、搜索、阅读文档,仍然无法从 React 应用更新内容丰富的数字字段。
    • @MadHatter 我建议使用您正在尝试的代码 sn-p 打开一个新问题。我很乐意看看。
    【解决方案2】:

    我知道在这里回答为时已晚,但在执行此过程时我也面临同样的问题。

    所以我问了这个问题并得到了答案,我们如何在不使用 Contentful-management sdk 的情况下实现这一目标。我的目的不是压制这个 sdk,但我们应该在没有它的情况下执行操作。我正在尝试通过邮递员来完成,但遇到了问题。

    所以我只是发布它并得到了答案,但理解为什么我无法更新内容的问题是因为两件事

    1. 网址(如果我们尝试更新内容,api.contentful.com 是正确的网址)

    2. access_token(如果我们使用 api.contentful.com,这意味着我们必须在内容中生成我们的个人令牌(管理令牌),我们不能使用预览/交付令牌)

    这些是我们在进行更新时需要考虑的重点。我发布了下面的链接可能对将来的人有所帮助。

    Updating entry of Contentful using postman

    【讨论】:

      猜你喜欢
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      • 2017-11-07
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      相关资源
      最近更新 更多