更新内容的条目



我尝试使用JavaScript中典型的HTTP请求更新内容的条目,而我碰到了砖墙。我收到错误代码" versionMismatch",根据文档,这意味着:

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

但是,我根据文档指定了使用" x-contentful-version"标头参数的当前版本,并已使用" entry.sys.revision"的动态属性值作为参数值(除了硬编码当前版本以及一堆不同的数字,但我总是会收到相同的错误)。这篇文章报告了完全相同的问题,但似乎通过添加此标头参数解决了。

这是我当前的代码,它也使用内容的API从我的内容空间中检索条目,但是我必须使用普通的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);
});
在这里

看来,您可以使用内容交付SDK获取内容,然后尝试使用该数据更新内容。这是行不通的。相反,我建议使用内容管理的SDK,它将为您服务所有版本控制标头。

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

所以我问了这个问题,并得到了答案,我们可以在不使用内容管理SDK的情况下实现这一目标。我的目的不是抑制此SDK,但我们应该在没有它的情况下执行操作。我正在尝试通过邮递员,但面对问题。

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

  1. url(如果要更新内容,则为正确的URL,是正确的URL)

  2. access_token(如果我们使用api.contentfun.com,这意味着我们必须在内容中生成我们的个人令牌(管理令牌),我们将无法使用Preview/preview/privice dovil tokens

这些是我们在更新时需要考虑的突出显示点。我发布了下面的链接,可能是将来有帮助。

使用Postman更新内容

相关内容

  • 没有找到相关文章

最新更新