SharePoint 2013 - 从站点和子站点

时间:2018-01-28 12:07:17

标签: rest api sharepoint sharepoint-2013

在使用REST API检索有关位于文档库的文档的信息时,我在SharePoint 2013SP中遇到了奇怪的行为。

以下是对该问题的描述,重现步骤为:

  1. 在顶级网站中,我创建了一个名为' collab'。
  2. 的子网站。
  3. 我将两个文档导入顶级网站的文档库。
  4. 我将新文档导入' collab'中的文档库。 子网站(只有一个文件以某种方式区分这两个库)。
  5. 我是在SharePoint 2013SP1服务器上完成的 - 刚刚安装。

    现在,当我查询服务器以查找'协作中的文档时子网站我使用以下REST调用:

    http://localhost/collab/_api/Web/lists/getByTitle('Documents')/Items
    

    这将返回2个位于顶级站点文档库中的文档,只返回来自collab子站点的一个文档。奇怪。

    运行此网址时得到的结果完全相同:

    http://localhost/_api/Web/lists/getByTitle('Documents')/Items
    

    为什么SharePoint不尊重网址中的子网站名称?

    此时我想也许我使用的是错误的端点,所以我决定尝试别的东西:

    http://localhost/collab/_api/Web/GetFolderByServerRelativeUrl('/collab/Shared%20Documents')
    

    令我惊讶的是,返回正确数量的文件:1

    查询顶级网站也会返回正确数量的项目:2。

    http://localhost/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents')
    

    所以现在我尝试检索有关顶级站点和子站点的文档库内容的信息:

    首先是顶级网站:

    http://localhost/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents')/Files
    

    此请求给出了正确的响应,有两个项目。

    让我们看看我是否为子站点获得相同的内容:

    http://localhost/collab/_api/Web/GetFolderByServerRelativeUrl('/collab/Shared%20Documents')/Files

    可悲的是,我得到了一个很难理解的回复:

    <feed xml:base="http://localhost/_api/" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml">
      <id>8f772a2c-2d90-4324-9168-3344aedca14b</id>
      <title/>
      <updated>2018-01-28T11:37:22Z</updated>
      <author>
        <name/>
      </author>
    </feed>
    

    这种反应是什么意思?

    当我尝试稍微不同的网址时:

    http://localhost/collab/_api/Web/GetFolderByServerRelativeUrl('/Shared%20Documents')/Files

    我会收到有关顶级网站中文档的回复详情,即使我已经合作了#39;网址中的网站名称。这是怎么回事?

    问题是:

    1. 如何以一致的方式检索站点和子站点文档库的文档列表?我应该使用什么REST API端点?
    2. 为什么上面的REST API调用只返回顶级文档库站点中忽略子站点文档库的那些文档?
    3. 谢谢!

      的Karol

1 个答案:

答案 0 :(得分:0)

使用以下REST URL从根站点的文档库中获取文件:

$ awk -F "" '{for(i=1;i<=5;i++)a[i]=a[i] ($i==""?" ":$i)}END{print a[1] ORS a[5] ORS a[3]}' file
c8431498 0e639b1bd45c 
c843149c405a3c 10 47c3
       |> || |< |< | >

使用以下REST URL从子站点(&#34; collab&#34;)中的文档库中获取文件:

http://localhost/_api/Web/GetFolderByServerRelativeUrl('Shared%20Documents')/Files

如果仍然无效,我建议您更新最新的SharePoint 2013。 Latest Updates for SharePoint 2013