0

有没有办法在Microsoft Graph API的一个请求中递归地包含子项(孙子项)的内容?

我想查询文件夹/foo/并获取/foo/baar/例如的内容/foo/baar/baz.txt

IGraphServiceClient graphClient = GraphServiceClient
   .builder()
   .authenticationProvider(authProvider)
   .buildClient();

IDriveItemCollectionPage children = graphClient
   .drives("{drive-id}")
   .items("{item-id}")
   .children()
   .buildRequest()
   .expand("children")
   .get();

使用扩展查询children返回一个com.microsoft.graph.http.GraphFatalServiceException: Unexpected exception returned from the service.Error code: notSupported

这将显着提高我的请求的性能。

编辑:刚刚创建了一个功能请求:列出包括孙子在内的孩子

4

1 回答 1

3

expand获取超过 1 级的文件是不可能的。它在 Microsoft Graph Api 文档的已知问题部分中提到。

但是我们可以使用search递归地获取所有文件和文件夹。

使用 q=''(空查询搜索)搜索,这将返回搜索范围内的所有文件和文件夹。对于特定范围的搜索,请参阅此答案。您可以使用 parentReference 键来排序哪个文件属于哪个文件夹。

示例 1:以下查询检索根范围内的所有文件和文件夹

https://graph.microsoft.com/v1.0/me/drive/root/search(q='')?$select=name,id,parentReference

示例 2:在根文件夹中名为“temp”的文件夹中进行搜索

https://graph.microsoft.com/v1.0/me/drive/root:/temp:/search(q='doc')?$select=name,id,parentReference

搜索限制(截至目前)

  • 最近创建的文件和文件夹需要一些时间才能反映在搜索结果中,因为它们需要被索引。当您查询儿童时,它们是可见的,但它们不会出现在搜索结果中。
  • 空查询技巧仅适用于 OneDrive 商业帐户,但不适用于 OneDrive 个人帐户。OneDrive个人账号,空查询时返回错误信息“搜索查询不能为空”
  • 范围特定搜索(例如:在特定文件夹中搜索)适用于 OneDrive Personal,但不适用于 OneDrive 企业帐户。
于 2020-03-01T02:04:38.280 回答