我们正在更新 Data API,以便与 YouTube 统计 Shorts 短视频观看次数的方式保持一致。
了解详情
实现:部分响应
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
以下示例展示了如何在 YouTube Data API (v3) 中检索部分 API 响应。
注意:该 API 的入门指南详细介绍了部分请求和响应。
v3 API 允许(实际上需要)检索部分资源,以便应用避免传输、解析和存储不需要的数据。这种方法还可确保 API 更高效地使用网络、CPU 和内存资源。
该 API 支持两个请求参数:part
和 fields
,可让您确定应包含在 API 响应中的资源属性。part
参数还用于标识应由用于插入或更新资源的 API 请求设置的属性。
请注意,如果更新请求未为之前具有值的资源属性指定值,则在满足以下条件时,系统会删除现有值:
示例
例如,假设您要更新下方所示的 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 响应。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-11-23。
[null,null,["最后更新时间 (UTC):2024-11-23。"],[[["\u003cp\u003eThe YouTube Data API (v3) requires retrieving partial resources to optimize data transfer, parsing, and storage.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003epart\u003c/code\u003e and \u003ccode\u003efields\u003c/code\u003e parameters enable users to specify which resource properties to include in API responses.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003epart\u003c/code\u003e parameter also dictates which properties are set during resource insertion or update requests.\u003c/p\u003e\n"],["\u003cp\u003eOmitting a previously valued property in an update request, within the specified \u003ccode\u003epart\u003c/code\u003e, will delete that property's value if modifiable.\u003c/p\u003e\n"],["\u003cp\u003eIncluding unexpected parts in an update request's body, meaning a part not listed in the \u003ccode\u003epart\u003c/code\u003e parameter, will result in a \u003ccode\u003e400 (Bad Request)\u003c/code\u003e HTTP response.\u003c/p\u003e\n"]]],["The YouTube Data API (v3) uses `part` and `fields` parameters to enable partial resource retrieval, improving efficiency by avoiding unnecessary data transfer. The `part` parameter identifies properties for retrieval and modification. When updating, omitting a previously valued property in the specified `part` results in its deletion. For example, updating a video resource's `snippet` part without including `description` deletes the description. Updating a property that is not in the part of the request being modified is not possible.\n"],null,["# Implementation: Partial responses\n\nThe following examples show how to retrieve partial API responses in the YouTube Data API (v3).\n\n**Note:** The API's [getting started](/youtube/v3/getting-started#partial) guide provides more detail about partial requests and responses.\n\nThe v3 API allows, and actually requires, the retrieval of partial resources so that applications avoid transferring, parsing, and storing unneeded data. This approach also ensures that the API uses network, CPU, and memory resources more efficiently.\n\nThe API supports two request parameters, `part` and `fields`, that enable you to identify the resource properties that should be included in API responses. The `part` parameter also identifies the properties that should be set by API requests that insert or update resources.\n\nNote that if an update request does not specify a value for a resource property that previously had a value, the existing value will be deleted if the following conditions are true:\n\n- The property's value can be modified by the request. (For example, when updating a `video` resource, you can update the value of the `snippet.description` property, but you cannot update the value of the `snippet.thumbnails` object.\n\n- The request's `part` parameter value identifies the resource part that contains the property.\n\n#### Example\n\nFor example, suppose you want to update the `video` resource shown below. (Note that all of the properties shown below can be updated via the API, and resource properties not relevant to the example have been omitted.) \n\n```\n{\n \"snippet\": {\n \"title\": \"Old video title\",\n \"description\": \"Old video description\",\n \"tags\": [\"keyword1\",\"keyword2\",\"keyword3\"],\n \"categoryId: 22\n },\n \"status\": {\n \"privacyStatus\": \"private\",\n \"publishAt\": \"2014-09-01T12:00:00.0Z\",\n \"license\": \"youtube\",\n \"embeddable\": True,\n \"publicStatsViewable\": True\n }\n}\n```\n\nYou call the [videos.update](/youtube/v3/docs/videos/update) method and set the `part` parameter value to `snippet`. The body of the API request contains the following resource: \n\n```\n{\n \"snippet\": {\n \"title\": \"New video title\",\n \"tags\": [\"keyword1\",\"keyword2\",\"keyword3\"],\n \"categoryId: 22\n }\n}\n```\n\nThis request updates the video's title, deletes its description, and does not change its tags or category ID. The video's description is deleted because the request does not specify a value for the `snippet.description` property.\n\nThe properties in the `status` object are not affected at all because the `part` parameter value did not include `status` as one of the parts that the request would update. In fact, if the body of the API request included the `status` object, the API would return a `400 (Bad Request)` HTTP response due to an [unexpected part](/youtube/v3/docs/errors#youtube.api.RequestContextError-badRequest-unexpectedPart) being included in the request body."]]