我想使用REST API创建新的内容类型,它将是现有内容类型的子项 - 工作流任务(SharePoint 2013)。因此,当我创建请求时,我在新Id中包含父内容类型ID。
我试过以下代码。
const api = '/_api/web/contenttypes';
const requestBody = {
'__metadata': {
'type': 'SP.ContentType',
},
'Description': 'This is content type',
'Name': 'TestContentType',
'Group': 'TestContentTypeGroup',
'Id': {
'__metadata': {
'type': 'SP.ContentTypeId'
},
'StringValue': '0x0108003365C4474CAE8C42BCE396314E88E51F000x010056401AE39A088645AD0597364A428033'
}
};
const requestHeaders = {
'accept': 'application/json;odata=verbose',
'content-type': 'application/json;odata=verbose',
'X-RequestDigest': <digestValue>
};
const requestData = JSON.stringify(requestBody);
var executor = new SP.RequestExecutor(<AppWebUrl>);
executor..executeAsync({
url: '<BaseUrl>' + api,
method: 'POST',
body: requestData,
headers: requestHeaders,
success: res => {
console.log(res);
},
error: error => {
console.log(error);
}
});
它确实创建了新的内容类型TestContentType,但它继承自Item Content Type,并且它没有我在请求中提供的相同Id。它随机生成任何id。
任何人都可以帮忙吗?
这实际上是REST API中的一个错误......
以下是为PnP JS库提交的问题的链接,其中添加内容类型的方式与您执行的方式相同:https://github.com/pnp/pnpjs/issues/457
帕特里克罗杰斯还向微软提出了一个解决问题的问题:https://github.com/SharePoint/sp-dev-docs/issues/3276
这意味着,目前,遗憾的是,无法使用REST执行此操作。您可以做的是提出问题,以提高其可见性,并希望尽快得到解决。