【问题标题】:SharePoint 2013 - getting list of files from a Document library in a site and sub-siteSharePoint 2013 - 从网站和子网站的文档库中获取文件列表
【发布时间】:2018-01-28 12:07:17
【问题描述】:

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

这里是问题的描述,重现的步骤是:

  1. 在顶级站点中,我创建了一个名为“collab”的子站点。
  2. 我将两个文档导入到顶级站点的文档库中。
  3. 我将一个新文档导入到“协作”中的文档库中 子站点(只需一个文档以某种方式区分这两个库)。

我是在 SharePoint 2013SP1 服务器上完成的 - 全新安装。

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

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

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

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

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

为什么 SharePoint 不支持 URL 中的子网站名称?

此时我认为可能是我使用了错误的端点,所以我决定尝试其他方法:

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

我得到了有关顶级站点中文档的响应详细信息,即使我在 URL 中有“协作”站点名称。这是怎么回事?

问题是:

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

谢谢!

卡罗尔

【问题讨论】:

    标签: rest api sharepoint sharepoint-2013


    【解决方案1】:

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

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

    使用以下 REST URL 从子站点(“collab”)的文档库中获取文件:

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

    如果还是不行,我建议你更新最新的 CU for SharePoint 2013。 Latest Updates for SharePoint 2013

    【讨论】:

      猜你喜欢
      • 2017-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 2019-05-19
      • 1970-01-01
      • 2014-03-26
      相关资源
      最近更新 更多