Реализация: частичные ответы

В примерах ниже показано, как получить частичные ответы API в YouTube Data API (v3).

Примечание. В руководстве по началу работы с API приведена более подробная информация о частичных запросах и ответах.

API версии 3 позволяет и даже требует извлекать частичные ресурсы, чтобы приложения не передавали, не анализировали и не хранили ненужные данные. Такой подход также позволяет API более эффективно использовать ресурсы сети, ЦП и памяти.

API поддерживает два параметра запроса: part и fields. С их помощью можно указать, какие свойства ресурса должны быть включены в ответы API. Параметр part также определяет свойства, которые должны быть заданы запросами к API, вставляющими или обновляющими ресурсы.

Обратите внимание, что если в запросе на обновление не указано значение для свойства ресурса, у которого оно было ранее, существующее значение будет удалено при соблюдении следующих условий:

  • Значение свойства можно изменить с помощью запроса. Например, при обновлении ресурса video вы можете изменить значение свойства snippet.description, но не объекта snippet.thumbnails.

  • Значение параметра part в запросе определяет часть ресурса, которая содержит свойство.

Пример

Предположим, вы хотите обновить ресурс video, показанный ниже. (Обратите внимание, что все перечисленные ниже свойства можно изменить с помощью API, а свойства ресурсов, не относящиеся к примеру, опущены.)

{
  "snippet": {
    "title": "Old video title",
    "description": "Old video description",
    "tags": ["keyword1","keyword2","keyword3"],
    "categoryId: 22
  },
  "status": {
    "privacyStatus": "private",
    "publishAt": "2014-09-01T12:00:00.0Z",
    "license": "youtube",
    "embeddable": True,
    "publicStatsViewable": True
  }
}

Вы вызываете метод videos.update и задаете для параметра part значение snippet. Тело запроса к API содержит следующий ресурс:

{
  "snippet": {
    "title": "New video title",
    "tags": ["keyword1","keyword2","keyword3"],
    "categoryId: 22
  }
}

Этот запрос обновляет название видео, удаляет его описание и не изменяет его теги или идентификатор категории. Описание видео удаляется, поскольку в запросе не указано значение свойства snippet.description.

Свойства в объекте status не затронуты, поскольку значение параметра part не включало status в качестве одной из частей, которые будут обновлены запросом. Если в теле запроса к API будет объект status, API вернет HTTP-ответ 400 (Bad Request), поскольку в теле запроса содержится неожиданная часть.