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

В следующих примерах показано, как получить частичные ответы API в API данных YouTube (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) из-за того, что в тело запроса была включена непредвиденная часть .