Чтобы вернуть именно те поля, которые вам нужны, и повысить производительность, используйте системный параметр fields
при вызове метода.
В этом документе объясняется, как использовать параметр fields
в Google Диске.
Как работает параметр fields
Параметр fields
использует FieldMask для фильтрации ответа. Маски полей используются для указания подмножества полей, которые должен вернуть запрос. Использование маски поля — это хорошая практика проектирования, позволяющая убедиться, что вы не запрашиваете ненужные данные, что, в свою очередь, помогает избежать ненужного времени обработки.
Если параметр fields
не указан, сервер возвращает набор полей по умолчанию, специфичный для метода. Например, метод list
в методе files
возвращает только поля kind
, id
, name
и mimeType
. Метод get
в ресурсе permissions
возвращает другой набор полей по умолчанию.
Для всех методов ресурсов about
, comments
(исключая delete
) и replies
(исключая delete
) необходимо задать параметр fields
. Эти методы не возвращают набор полей по умолчанию.
После того, как сервер обработает допустимый запрос, включающий параметр fields
, он возвращает код состояния HTTP 200 OK
вместе с запрошенными данными. Если параметр fields содержит ошибку или является иным образом недопустимым, сервер возвращает код состояния HTTP 400 Bad Request
вместе с сообщением об ошибке, в котором указывается, что не так с выбором полей. Например, files.list(fields='files(id,capabilities,canAddChildren)')
возвращает ошибку "Недопустимый выбор поля canAddChildren". Правильный параметр fields для этого примера — files.list(fields='files(id,capabilities/canAddChildren)')
.
Чтобы определить поля, которые вы можете вернуть с помощью параметра fields
, посетите страницу документации ресурса, который вы запрашиваете. Например, чтобы узнать, какие поля вы можете вернуть для файла, обратитесь к документации ресурса files
. Для получения дополнительных терминов запроса, специфичных для файлов, см. Условия и операторы поискового запроса .
Правила форматирования параметров поля
Формат значения параметра запроса fields в общих чертах основан на синтаксисе XPath. Ниже приведены правила форматирования для параметра fields
. Все эти правила используют примеры, связанные с методом files.get
.
Для выбора нескольких полей используйте список, разделенный запятыми, например
'name, mimeType'
.Используйте
a/b
для выбора поляb
, которое вложено в полеa
, например,'capabilities/canDownload'
. Для получения дополнительной информации см. Извлечение полей вложенного ресурса .Используйте подселектор для запроса набора определенных подполей массивов или объектов, поместив выражения в скобки "()". Например,
'permissions(id)'
возвращает только идентификатор разрешения для каждого элемента в массиве разрешений.Чтобы вернуть все поля в объекте, используйте звездочку (
*
) в качестве подстановочного знака при выборе полей. Например,'permissions/permissionDetails/*'
выбирает все доступные поля сведений о разрешении для каждого разрешения. Обратите внимание, что использование подстановочного знака может привести к негативным последствиям для производительности запроса.
Запрос
В этом примере мы предоставляем параметр пути идентификатора файла и несколько полей в качестве параметра запроса в запросе. Ответ возвращает значения полей для идентификатора файла.
GET https://www.googleapis.com/drive/v3/files/FILE_ID?fields=name,starred,shared
Ответ
{ "name": "File1", "starred": false, "shared": true } }
Извлечь поля вложенного ресурса
Когда поле ссылается на другой ресурс, вы можете указать, какие поля вложенного ресурса следует извлечь.
Например, чтобы получить поле role
(вложенный ресурс) ресурса permissions
, используйте любой из следующих вариантов:
-
permissions.get
сfields=role
. -
permissions.get
сfields=*
для отображения всех полейpermissions
. -
files.get
сfields=permissions(role)
илиfields=permissions/role
. -
files.get
сfields=permissions
для отображения всех полейpermissions
. -
changes.list
сfields=changes(file(permissions(role)))
.
Чтобы получить несколько полей, используйте список, разделенный запятыми. Например, files.list
с fields=files(id,name,createdTime,modifiedTime,size)
.
Запрос
В этом примере мы предоставляем параметр пути идентификатора файла и несколько полей, включая определенные поля вложенного ресурса разрешений, в качестве параметра запроса в запросе. Ответ возвращает значения полей для идентификатора файла.
GET https://www.googleapis.com/drive/v3/files/FILE_ID?fields=name,starred,shared,permissions(kind,type,role)
Ответ
{ "name": "File1", "starred": false, "shared": true, "permissions": [ { "kind": "drive#permission", "type": "user", "role": "owner" } ] }