SharePoint REST - 为什么更新元数据 returns 204 而不是 200?

SharePoint REST - Why update Metadata returns 204 instead of 200?

使用以下端点我们可以更新特定文件的元数据:https://domain.example.com/_api/web/GetFileByServerRelativeUrl(URL)/ListItemAllFields

为什么更新元数据成功后 API returns 204 而不是 200。是预期的还是有任何其他更新元数据的方法。

SharePoint REST API 在更新后 return 没有更新 item/object。如果更新请求成功,它只会 return 状态代码 204。

如果你想获得更新item/object,你必须再次发出 GET 请求。

/_api/web/lists/getbytitle('list name')/items(item id)

根据Dynamics Web API Documentation,默认是在不return更新结果的情况下更新数据。这就是您获得状态代码 204 的原因。为了获取数据 returned,您需要将 prefer:return=representation header 添加到 Web API 调用中。添加 prefer header 将 return 状态代码为 200。

C# 示例

HttpClient client = new HttpClient();
client.BaseAddress = new Uri(Helpers.GetSystemUrl(APIConnector.Application.Dynamics));
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("OData-MaxVersion", "4.0");
client.DefaultRequestHeaders.Add("OData-Version", "4.0");
client.DefaultRequestHeaders.Add("prefer", "return=representation");

打字稿示例

let xhr = new XMLHttpRequest();
xhr.open("PATCH", CONNECTION_URL, true);
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("OData-MaxVersion", "4.0");
xhr.setRequestHeader("OData-Version", "4.0");
xhr.setRequestHeader("Content-Type", "application/json");          
xhr.setRequestHeader("prefer", "return=representation");