Последняя версия API Google Drive — v3. Производительность в версии v3 выше, поскольку поиск возвращает только подмножество полей. Используйте текущую версию, если вам не нужна коллекция v2 . Если вы используете v2, рассмотрите возможность перехода на v3. Для перехода см. раздел «Переход на API Drive v3» . Полный список различий между версиями см. в справочнике по сравнению API Drive v2 и v3 .
Если вы хотите продолжить использование версии 2, ознакомьтесь с поправкой к руководству по Drive API версии 2, чтобы узнать, как некоторые инструкции в руководствах версии 3 должны быть изменены для разработчиков версии 2.
Чтобы узнать больше об улучшениях Drive API v3, вы можете посмотреть следующее видео от инженеров Google, в котором обсуждается новый дизайн API.
Улучшения версии V3
Для оптимизации производительности и снижения сложности поведения API в версии 3 реализованы следующие улучшения по сравнению с предыдущей версией API:
- Поиск файлов и общих дисков по умолчанию не возвращает полные ресурсы, а только подмножество часто используемых полей. Более подробную информацию о
fieldsсм. в методахfiles.listиdrives.list. - Практически все методы, возвращающие ответ, теперь требуют параметра
fields. Список всех методов, требующихfields, см. в справочнике API Drive . - Ресурсы с дублирующимися возможностями были удалены. Вот несколько примеров:
- Метод
files.listвыполняет ту же функциональность, что и коллекцииChildrenиParents, поэтому они были удалены из версии 3. - Методы
Realtime.*были удалены.
- Метод
- Данные приложения по умолчанию не возвращаются при поиске. В версии 2 можно задать область видимости
drive.appdata, и данные приложения будут возвращаться из методовfiles.listиchanges.list, но это замедлит производительность. В версии 3 вы задаете область видимостиdrive.appdata, а также параметр запросаspaces=appDataFolderдля запроса данных приложения. - Во всех операциях обновления используется команда PATCH вместо PUT.
- Для экспорта документов Google используйте метод
files.export. - Метод
changes.listработает иначе. Вместо идентификаторов изменений используются непрозрачные токены страниц. Для опроса коллекции изменений сначала вызовите методchanges.getStartPageTokenдля получения начального значения. Для последующих запросов методchanges.listвозвращает значениеnewStartPageToken. - Теперь методы обновления отклоняют запросы, в которых указаны поля, недоступные для записи.
- В версии 2 поля
exportFormatsиimportFormatsв разделеaboutпрограмме" представляют собой списки допустимых форматов импорта или экспорта. В версии 3 они представляют собой карты MIME-типов возможных целевых объектов для всех поддерживаемых форматов импорта или экспорта. - В версии 2 псевдонимы
appdataиappfolderтеперь называютсяappDataFolderа в версии 3 — appDataFolder. - Ресурс
propertiesудален из версии 3. Ресурсfilesсодержит полеproperties, в котором находятся настоящие пары ключ-значение. Полеpropertiesсодержит общедоступные свойства, а полеappProperties— закрытые свойства, поэтому поле visibility не требуется. - Поле
modifiedTimeв ресурсеfilesобновляется в момент последнего изменения файла. В версии 2 полеmodifiedDateможно было изменить при обновлении только в том случае, если было установлено значение поляsetModifiedDate. - Поле
viewedByMeTimeв ресурсеfilesне обновляется автоматически. - Для импорта форматов Google Docs необходимо указать соответствующий целевой
mimeTypeв теле ресурса. В версии 2 это делается с помощью параметра?convert=true. - При импорте данных возвращается ошибка 400, если формат не поддерживается.
- Читатели и комментаторы не могут просматривать права доступа.
- Псевдоним
meдля разрешений удален. - Некоторые функции ранее были доступны в составе ресурса запроса, но теперь доступны в качестве параметра запроса. Например:
- В версии 2 вы можете использовать
children.deleteдля удаления дочернего файла из родительской папки. - В версии 3 для дочернего элемента используется
files.updateс параметром?removeParents=parent_idв URL-адресе.
- В версии 2 вы можете использовать
Другие различия
В версии 3 названия полей и параметров отличаются. Вот несколько примеров:
- Свойство
nameзаменяетtitleв ресурсеfiles. - Вместо
Dateдля всех полей даты и времени используется суффиксTime. - В операциях со списками поле
itemsне используется для хранения результирующего набора. Тип ресурса предоставляет поле для результатов (например,filesилиchanges).