我想通过一次 REST API 调用获取 Office365 OneDrive 文件夹中包含的所有文件和文件夹,是否有任何选项可以做到这一点?
没有特定的 API 调用来检索云端硬盘的平面表示。不过,您可以使用驱动器的 search 方法来实现类似的效果。
只需传递一个空查询字符串,它将返回每个文件的元数据(无论其目录如何):
https://graph.microsoft.com/v1.0/me/drive/root/search(q='')
从here获得的另一种方法是使用Delta-Query:
https://graph.microsoft.com/v1.0/drives/[DRIVEID]/root/delta
这也适用于特定的 Item-Id:
https://graph.microsoft.com/v1.0/drives/[DRIVEID]/items/[ITEM ID]/delta
好的,尝试这个搜索请求:
https://graph.microsoft.com/v1.0/me/drive/root/search(q='%2A')
或者:
https://api.onedrive.com:443/v1.0/drives/(driveid)/items/(itemid)/view.search?q=%2A
其中 %2A 是星号,itemid 可能是根文件夹 ID。不要忘记分页。
或使用 OneDriveSDK:
_connection.SearchForItemsAsync(odFolder.ItemReference(), "*", ItemRetrievalOptions.Default)
不要在搜索查询中使用“展开”查询。 这应该递归地返回当前文件夹中的所有项目 - 子文件夹、子项目。