【发布时间】:2018-01-28 12:07:17
【问题描述】:
在使用 REST API 检索有关位于文档库的文档的信息时,我在 SharePoint 2013SP 中遇到了奇怪的行为。
这里是问题的描述,重现的步骤是:
- 在顶级站点中,我创建了一个名为“collab”的子站点。
- 我将两个文档导入到顶级站点的文档库中。
- 我将一个新文档导入到“协作”中的文档库中 子站点(只需一个文档以某种方式区分这两个库)。
我是在 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 中有“协作”站点名称。这是怎么回事?
问题是:
- 如何以一致的方式检索站点和子站点文档库的文档列表?我应该使用哪个 REST API 端点?
- 为什么上面的 REST API 调用只返回顶级文档库站点中的文档而忽略子站点的文档库?
谢谢!
卡罗尔
【问题讨论】:
标签: rest api sharepoint sharepoint-2013