实现:部分响应

以下示例展示了如何在 YouTube Data API (v3) 中检索部分 API 响应。

注意:该 API 的入门指南详细介绍了部分请求和响应。

v3 API 允许(实际上需要)检索部分资源,以便应用避免传输、解析和存储不需要的数据。这种方法还可确保 API 更高效地使用网络、CPU 和内存资源。

该 API 支持两个请求参数:partfields,可让您确定应包含在 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
  }
}

此请求会更新视频的标题、删除其说明,但不会更改其标签或类别 ID。由于请求未为 snippet.description 属性指定值,因此系统会删除视频的说明。

status 对象中的属性完全没有受到影响,因为 part 参数值未将 status 作为请求要更新的部分之一。事实上,如果 API 请求的正文包含 status 对象,则由于请求正文中包含意外部分,API 会返回 400 (Bad Request) HTTP 响应。