我在尝试使用 Javascript 中的典型 http 请求更新 Contentful 条目时遇到了障碍;我收到错误代码“VersionMismatch”,根据文档,这意味着:
当您尝试更新现有资产、条目或内容类型,并且您没有指定对象的当前版本或指定过时版本时,会发生此错误。
但是,我已根据文档使用“X-Contentful-Version”标头参数指定条目的当前版本,并使用“entry.sys.revision”中的动态属性值作为参数值(以及硬编码当前版本,加上一堆不同的数字,但我总是收到相同的错误)。这篇文章报告了完全相同的问题,但似乎通过添加此标头参数得到了解决。
这是我当前的代码,它也使用 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);
});