使用Sharepoint REST API,我能够获得"作者" (我作为所有者/创建者信息)信息的文件和文件夹。对于文件,我可以简单地扩展"作者" element并获取Title和UserId信息。对于文件夹,我必须使用" AuthorId"来自扩展的领域" ListItemAllFields"进行后续的REST调用以通过Id解析Title和UserId信息(我也不喜欢这个额外的步骤,但我还没有找到一种方法来获取具有单个GET的文件夹的信息)。但是,对于基本列表及其关联的" RootFolder" s,即使我展开RootFolder的ListItemAllFields,我也不会收到作者信息。有没有办法获取至少我的文件夹和文件所在的文档库列表的所有者\创建者信息?我希望扩展RootFolder的ListItemAllField会给我" AuthorId"就像它在文档库中创建的子文件夹一样,但我得到的只是:... / _ api / Web / GetFolderByServerRelativeUrl(' docLibraryRootFolderServerRelativeUrl')/ ListItemAllFields,是:
{
"d": {
"ListItemAllFields": null
}
}
答案 0 :(得分:1)
ListItemAllFields
属性会将关联的 List Item
与File
或Folder
个对象一起返回。
对于列表对象
REST查询:
http://<sitecollection>/<site>/_api/web/lists/getbytitle(listtitle)/ListItemAllFields
由于List
对象与List Item对象没有关联,不返回任何内容。
为了检索Author
对象的List
属性,您可以使用以下方法。解决方案是从List XML架构中提取Author属性。
以下方法用于返回List
对象的所有可用属性:
function getListProperties(listTitle) {
var listEndpointUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('" + listTitle + "')/SchemaXml";
return getJson(listEndpointUrl).then(
function(data){
var schemaXml = data.d.SchemaXml;
return schemaXml2Json(schemaXml);
});
}
,其中
function getJson(url)
{
return $.ajax({
url: url,
type: "GET",
contentType: "application/json;odata=verbose",
headers: {
"Accept": "application/json;odata=verbose"
}
});
}
function schemaXml2Json(schemaXml)
{
var jsonObject = {};
var schemaXmlDoc = $.parseXML(schemaXml);
$(schemaXmlDoc).find('List').each(function() {
$.each(this.attributes, function(i, attr){
jsonObject[attr.name] = attr.value;
});
});
return jsonObject;
}
<强>用法强>
如何获取Author
对象的List
属性:
getListProperties('Discussion Board')
.done(function(properties)
{
console.log('List created by: ' + properties.Author);
})
.fail(
function(error){
console.log(JSON.stringify(error));
});
请按this post了解详情。