SPFX React 使用 Rest API 404 问题更新文档库文件元数据
SPFX React Updating Document Library file metadata using Rest API 404 issue
我在库中创建了一个 SPFX 扩展,并尝试更新文档库中特定文件夹内的文件元数据。我有该特定文件的项目 ID,但出现 404 问题。这是一直在使用的示例代码,
this.spHttpClient.post(`${url}`,
SPHttpClient.configurations.v1,
{
headers: {
"Accept": "application/json; odata=verbose",
'content-type': 'application/json;odata=verbose',
"X-RequestDigest": requestDigest,
"X-Http-Method": "MERGE",
"If-Match": "*"
},
body: JSON.stringify({
"__metadata": { "type": "SP.Data.10Q_x0020_and_x0020_10K_x0020_Filing_x0020_UnzippedItem" },
"Title": titleLinkUrl
})
})
.then((response: SPHttpClientResponse): void => {
alert('sucess')
}).catch(error => {
console.error(error);
})
}
404错误通常意味着没有得到有效的列表项。
建议在浏览器中测试Rest Endpoint,看是否有Json返回。 body 和 headers 应该是正确的。
我这边测试了一个示例代码,请参考:
private updateItem() {
var posturl = this.props.context.pageContext.web.absoluteUrl + `/_api/web/lists/GetByTitle('doc2')/items(10)`;
var payload = JSON.stringify({
"__metadata": {
"type": "SP.Data.Doc2Item"
},
"Title": "UpdatedTitle"
});
var option = {
headers: {
'IF-MATCH': '*',
'Content-type': 'application/json;odata=verbose',
"accept": "application/json;odata=verbose",
"odata-version":"3.0",
'X-HTTP-Method': 'PATCH'
},
body: payload
};
return this.props.context.spHttpClient.post(posturl, SPHttpClient.configurations.v1, option).then((response: SPHttpClientResponse) => {
alert(response.status + ':' + response.ok);
});
}
var option = {
headers: {
'IF-MATCH': '*',
'Content-type': 'application/json;odata=verbose',
"accept": "application/json;odata=verbose",
"odata-version":"3.0",
'X-HTTP-Method': 'PATCH'
},
body: payload
};
return this.props.context.spHttpClient.post(posturl, SPHttpClient.configurations.v1, option).then((response: SPHttpClientResponse) => {
alert(response.status + ':' + response.ok);
});
}
我在库中创建了一个 SPFX 扩展,并尝试更新文档库中特定文件夹内的文件元数据。我有该特定文件的项目 ID,但出现 404 问题。这是一直在使用的示例代码,
this.spHttpClient.post(`${url}`,
SPHttpClient.configurations.v1,
{
headers: {
"Accept": "application/json; odata=verbose",
'content-type': 'application/json;odata=verbose',
"X-RequestDigest": requestDigest,
"X-Http-Method": "MERGE",
"If-Match": "*"
},
body: JSON.stringify({
"__metadata": { "type": "SP.Data.10Q_x0020_and_x0020_10K_x0020_Filing_x0020_UnzippedItem" },
"Title": titleLinkUrl
})
})
.then((response: SPHttpClientResponse): void => {
alert('sucess')
}).catch(error => {
console.error(error);
})
}
404错误通常意味着没有得到有效的列表项。
建议在浏览器中测试Rest Endpoint,看是否有Json返回。 body 和 headers 应该是正确的。 我这边测试了一个示例代码,请参考:
private updateItem() {
var posturl = this.props.context.pageContext.web.absoluteUrl + `/_api/web/lists/GetByTitle('doc2')/items(10)`;
var payload = JSON.stringify({
"__metadata": {
"type": "SP.Data.Doc2Item"
},
"Title": "UpdatedTitle"
});
var option = {
headers: {
'IF-MATCH': '*',
'Content-type': 'application/json;odata=verbose',
"accept": "application/json;odata=verbose",
"odata-version":"3.0",
'X-HTTP-Method': 'PATCH'
},
body: payload
};
return this.props.context.spHttpClient.post(posturl, SPHttpClient.configurations.v1, option).then((response: SPHttpClientResponse) => {
alert(response.status + ':' + response.ok);
});
}
var option = {
headers: {
'IF-MATCH': '*',
'Content-type': 'application/json;odata=verbose',
"accept": "application/json;odata=verbose",
"odata-version":"3.0",
'X-HTTP-Method': 'PATCH'
},
body: payload
};
return this.props.context.spHttpClient.post(posturl, SPHttpClient.configurations.v1, option).then((response: SPHttpClientResponse) => {
alert(response.status + ':' + response.ok);
});
}