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

时间:2018-05-22 21:30:40

标签: sharepoint dynamics-crm sharepoint-api dynamics-365

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

为什么在成功更新元数据后,API会返回204而不是200.是预期还是有其他方式更新元数据。

2 个答案:

答案 0 :(得分:1)

更新后,SharePoint REST API不会返回更新的项目/对象。如果更新请求成功,它仅返回状态代码204。

如果您想获得更新的项目/对象,则必须另外发出GET请求。

df2.select(df2.columns.map(c => testUDF(df1, c)(col(c)).alias(c + "_test")): _*)



def testUDF(df1: DataFrame, cn: String) =
   udf((c:String) => {
    val t = df1.where(col("fn") === cn)
    //somecode
})

答案 1 :(得分:1)

根据Dynamics Web API Documentation,默认情况下更新数据而不返回更新的结果。这就是您获取状态代码204的原因。为了返回数据,您需要在Web API调用中添加prefer:return=representation标头。添加prefer标头将返回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");