Microsoft Graph:如何接收驱动器的远程项目列表?
Microsoft Graph: How to receive list of remote items for drive?
如何快速接收 remote items 的驱动器项目列表(链接到其他驱动器上的项目的项目,与我共享的项目)?
我当然可以做类似的事情:
// Universal version
var res = new List<DriveItem>();
var list = await Client.Me.Drive.Root.Children.Request().GetAsync();
while (list != null)
{
res.AddRange(list.CurrentPage.Where(i => (i.RemoteItem != null)));
list = (list.NextPageRequest != null) ? (await list.NextPageRequest.GetAsync()) : null;
}
return res;
但它太慢了,需要解析所有项目。我可以使用过滤器来解决这个任务吗?换句话说,下面的代码是否适用于所有类型的驱动器(OneDrive Personal、Business、SharePoint ...)?
// Filtered version
var res = new List<DriveItem>();
var list = await Client.Me.Drive.Root.Children.Request().Filter("remoteItem ne null").GetAsync();
while (list != null)
{
res.AddRange(list.CurrentPage);
list = (list.NextPageRequest != null) ? (await list.NextPageRequest.GetAsync()) : null;
}
return res;
根据 OneDrive documentation:
While the filter syntax can be used on any property of an item, we have optimized certain properties to be fast and efficient to filter on.
Note: In OneDrive for Business, SharePoint Online and SharePoint Server 2016, filtering support only name and url properties.
这是否意味着 OneDrive for Business 和 SharePoint 不支持按 remoteItem facet 筛选?
很遗憾,Microsoft Grap documentation 不包含任何关于它的附加信息。
P.S.: 我没有 OneDrive Business 帐户,所以,抱歉,无法检查我的假设。
首先,您应该加入 Office 365 Developer Program。该程序包括一个免费的 Office 365 开发人员许可证,它将解决您的 OneDrive for Business 问题。这两个系统之间存在一些细微差别,因此强烈建议对两者进行测试。
关于你的问题,我会看一下 sharedWithMe 端点。此方法 returns 已从远程驱动器与您共享的项目集合。
我也强烈建议转向 Microsoft Graph。它提供与 OneDrive 相同的 API,但也公开了大量其他端点。大量的努力被汇集到 Graph 中,使其成为一个更好的长期战略。
如何快速接收 remote items 的驱动器项目列表(链接到其他驱动器上的项目的项目,与我共享的项目)?
我当然可以做类似的事情:
// Universal version
var res = new List<DriveItem>();
var list = await Client.Me.Drive.Root.Children.Request().GetAsync();
while (list != null)
{
res.AddRange(list.CurrentPage.Where(i => (i.RemoteItem != null)));
list = (list.NextPageRequest != null) ? (await list.NextPageRequest.GetAsync()) : null;
}
return res;
但它太慢了,需要解析所有项目。我可以使用过滤器来解决这个任务吗?换句话说,下面的代码是否适用于所有类型的驱动器(OneDrive Personal、Business、SharePoint ...)?
// Filtered version
var res = new List<DriveItem>();
var list = await Client.Me.Drive.Root.Children.Request().Filter("remoteItem ne null").GetAsync();
while (list != null)
{
res.AddRange(list.CurrentPage);
list = (list.NextPageRequest != null) ? (await list.NextPageRequest.GetAsync()) : null;
}
return res;
根据 OneDrive documentation:
While the filter syntax can be used on any property of an item, we have optimized certain properties to be fast and efficient to filter on.
Note: In OneDrive for Business, SharePoint Online and SharePoint Server 2016, filtering support only name and url properties.
这是否意味着 OneDrive for Business 和 SharePoint 不支持按 remoteItem facet 筛选?
很遗憾,Microsoft Grap documentation 不包含任何关于它的附加信息。
P.S.: 我没有 OneDrive Business 帐户,所以,抱歉,无法检查我的假设。
首先,您应该加入 Office 365 Developer Program。该程序包括一个免费的 Office 365 开发人员许可证,它将解决您的 OneDrive for Business 问题。这两个系统之间存在一些细微差别,因此强烈建议对两者进行测试。
关于你的问题,我会看一下 sharedWithMe 端点。此方法 returns 已从远程驱动器与您共享的项目集合。
我也强烈建议转向 Microsoft Graph。它提供与 OneDrive 相同的 API,但也公开了大量其他端点。大量的努力被汇集到 Graph 中,使其成为一个更好的长期战略。