Google Drive API v3,有没有办法获取fileId父文件夹的列表?

时间:2016-01-22 19:25:55

标签: google-api google-drive-api google-api-v3

在v2中,可以使用查询/files调用fileId in children来获取作为所提供文件的父项的DriveFile个对象的列表。

现在,似乎需要拨打/files/:fileId?fields=parents,然后为每个返回的父母单独调用/files/:parentId,可能会将一个电话转为十几个。

这是否正确,如果是这样为什么?这对我们的应用程序来说是一个巨大的性能影响,所以希望这是一种无证的方法。

3 个答案:

答案 0 :(得分:2)

查询"' fileId'在儿童'"在v2中也没有公开存在(没有记录/支持),我也不记得它曾经存在过。 V2中存在 的是Parent集合,它有效地回答了同一个问题。在第3版中,为了获取文件的父母,您只需要接收孩子并询问父母字段。

至于是否会影响性能,我不认为它在实践中。 v2中的Parents资源开始时非常轻松,除了ID之外,唯一有用的字段是' isRoot'属性。您可以通过先调用files / root来获取该用户的根文件夹的ID来计算自己(只需一次并保存,它就不会为该用户进行更改。)

如果您需要获取有关父母的更多信息而不仅仅是ID,并且担心您必须进行的调用,请使用批处理来获取它们。如果您只有一个父级,则无需批处理(它只是开销。)如果您发现文件有多个父级,请创建批处理请求。这将作为单个HTTP请求/响应发送,并在后端非常有效地处理。

重点是,如果你只是需要ID,它并不比以前更糟糕。这是一个致电文件父母的电话。

如果您需要的不仅仅是ID,那么最多只有2个HTTP请求(超出批量大小的1000多个父母之外的奇怪边缘情况除外)。

答案 1 :(得分:0)

您只需提及如下内容:

var request = service.Files.List();
 request.Q = "('root' in parents)";
 var FileListOfParentOnly = request.Execute();

答案 2 :(得分:-1)

在V3中,可以列出父母的所有孩子,如下所述:https://developers.google.com/drive/v3/web/search-parameters

示例电话: https://www.googleapis.com/drive/v3/files?q=parents in '0Byho0qAdzabmVl8xcDR1S0pNY3c'当然用%20替换空格,这将列出文件夹中id='0Byho0qAdzabmVl8xcDR1S0pNY3c'

的所有文件