如何在POST查询中使用REST API获取作者字段值

时间:2018-12-20 10:24:21

标签: rest sharepoint caml

我想使用POST方法中的REST API从SharePoint的“论坛”列表中在线获取“作者”字段。我尝试了下面的方法,它不起作用。

var queryUrl =
  '?$select=ID,Title,Body,Author/Title,Folder/ItemCount,FieldValuesAsText/FileRef&$expand=Author,FieldValuesAsText,Folder/ItemCount';
var url =
  siteUrl +
  "/_api/Web/lists/GetByTitle('" +
  listName +
  "')/GetItems" +
  queryUrl;

var camlQuery =
  '<View><Query>' +
  getQueryParams() +
  "<OrderBy><FieldRef Name='DiscussionLastUpdated' Ascending='False'/></OrderBy></Query><RowLimit>12</RowLimit></View>";

var requestData = {
  query: { __metadata: { type: 'SP.CamlQuery' }, ViewXml: camlQuery }
};

jQuery.ajax({
  url: url,
  method: 'POST',
  data: JSON.stringify(requestData),
  headers: {
    'X-RequestDigest': $('#__REQUESTDIGEST').val(),
    Accept: 'application/json; odata=verbose',
    'Content-Type': 'application/json; odata=verbose'
  },
  success: function(data, status, jqXHR) {
    dfd.resolve(data);
  },
  error: function(xhr) {
    dfd.reject(xhr);
  }
});
return dfd.promise();

输出如下。

enter image description here

1 个答案:

答案 0 :(得分:0)

正如我在this post中所解释的那样,在通过POST查询时, $ expand 似乎不适用于某些特殊列(例如People)。最好的方法是使用Items API

但是,如果您只想继续使用此方法,请尝试将 queryUrl 值替换为以下内容。

var queryUrl ='?$select=ID,Title,Body,Folder/ItemCount,FieldValuesAsText/FileRef,FieldValuesAsText/Author&$expand=FieldValuesAsText,Folder/ItemCount';

基本上,我想做的是,不是直接查询 Author 字段,而是从 FieldValuesAsText 下请求它。您请求 FileRef 属性的方法几乎相同。

相关问题