【问题标题】:Getting owner/creator information for a list using Sharepoint REST API使用 Sharepoint REST API 获取列表的所有者/创建者信息
【发布时间】:2014-11-10 03:13:47
【问题描述】:

使用 Sharepoint REST API,我可以获得文件和文件夹的“作者”(我将其作为所有者/创建者信息)信息。对于文件,我可以简单地展开“作者”元素并获取 Title 和 UserId 信息。对于文件夹,我必须使用扩展“ListItemAllFields”中的“AuthorId”字段来进行后续的 REST 调用,以通过 Id 解析 Title 和 UserId 信息(我也不喜欢这个额外的步骤,但我还没有找到方法使用单个 GET 获取文件夹的信息)。但是,对于基本列表及其关联的“RootFolder”,即使展开 RootFolder 的 ListItemAllFields,我也没有获得作者信息。有没有办法至少获取我的文件夹和文件所在的文档库列表的所有者\创建者信息?我希望扩展 RootFolder 的 ListItemAllFields 会给我“AuthorId”,就像它对文档库中创建的子文件夹一样,但我得到的只是: .../_api/Web/GetFolderByServerRelativeUrl('docLibraryRootFolderServerRelativeUrl' )/ListItemAllFields,是:

{
    "d": {
        "ListItemAllFields": null
    }
}

【问题讨论】:

    标签: rest sharepoint


    【解决方案1】:

    ListItemAllFields 属性返回 关联 List ItemFileFolder 对象。

    对于列表对象

    REST 查询:

    http://<sitecollection>/<site>/_api/web/lists/getbytitle(listtitle)/ListItemAllFields
    

    由于List 对象未与列表项对象关联,因此不返回任何内容。


    为了检索List 对象的Author 属性,您可以使用以下方法。解决方案是从 List XML schema 中提取 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;
    }    
    

    用法

    如何获取List 对象的Author 属性:

    getListProperties('Discussion Board')
    .done(function(properties)
    {
        console.log('List created by: ' + properties.Author);
    })
    .fail(
    function(error){
        console.log(JSON.stringify(error));
    });
    

    请关注this post 了解更多详情。

    【讨论】:

    • 谢谢 Vadim,我得试一试。我的代码是用 Java 编写的,我请求 JSON 作为我的响应。将使用"Accept": application/json;odata=verbose 请求“schemaXml”端点给我一个 JSON 响应,或者我是否必须获取 XML 并将其转换为 JSON,如您的示例所示。
    • 托马斯,好问题。不幸的是,请求“schemaXml”端点将返回一个 xml 字符串,这就是我使用 schemaXml2Json 的原因。但我希望在 Java 中也可以轻松地将 xml 字符串转换为 json 对象
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 2011-03-17
    • 2018-09-28
    • 2016-07-08
    • 2019-03-22
    • 2015-11-30
    相关资源
    最近更新 更多