每个 YouTube Data API 请求都可以指定 YouTube 应使用哪个 API 版本来处理该请求。如果请求未指定 API 版本,YouTube 将使用最早的受支持 API 版本来处理该请求。目前支持的最早版本是 1。请注意 API 版本号的以下特征:
-
YouTube 可能会发布特定 API 版本的更新,但不会为该版本分配新的版本号。这些向后兼容的更新会包含可选的 API 功能和/或错误修正程序。
-
API 版本号的增加表明推出了新版本,其中所包含的更改与先前的 API 版本不兼容。
本文档定义了针对特定 API 版本的更新(上文中列出的第一个项目)的向后兼容性准则。这些准则旨在区分以下两种类型的 API 功能:
-
这些准则指出了哪些 API 功能可能会发生变化,即使您不修改应用于处理 API 请求的 API 版本也是如此。您的代码应能够处理这些更改,而不会中断。例如,如果 YouTube 在 API 响应中添加了新的 XML 标记,您的代码应忽略这些标记。
-
这些准则还定义了 YouTube 在更新特定 API 版本时不打算更改的 API 功能。也就是说,只有在 YouTube 发布新的 API 版本,并且此类更改不会影响您的代码时,YouTube 才会更改这些功能。
关于此文档
本文档包含以下几个部分:
-
API 请求部分定义了与 HTTP 请求标头、API 请求参数、XML 元素名称(在 API 请求中显示的名称)和格式不正确的 API 请求相关的向后兼容性准则。
-
“API 响应”部分定义了与 XML 元素名称(在 API 响应中显示的名称)以及 XML 标记和属性在 API 响应中显示的顺序相关的向后兼容性准则。
-
最佳实践部分概述了有关将 YouTube API 与客户端应用集成的建议。
API 请求
不希望更改的功能
-
现有的请求参数。
-
具有枚举值的参数的现有参数值或这些参数值的含义。
-
在 API POST(插入)或 PUT(更新)请求中使用的 XML 元素名称。
-
每种类型的 API 请求所需的一组 HTTP 请求标头。这些准则说明了 YouTube 不希望添加必需的 HTTP 请求标头,也不希望将现有的可选请求标头更改成必需的请求标头。
-
除非请求使用
strict参数(用于指示 YouTube 拒绝包含无效请求参数的 API 请求),否则会忽略 API 请求中的不受支持的参数。
可以更改的功能
-
YouTube 可添加可选的请求参数。
-
YouTube 可为具有枚举值集合的现有参数添加新值。
-
如果有效参数包含无效参数值,YouTube 可能会拒绝任何请求。这样,对于因解析标准不够严格而获得通过的格式不正确的请求,在解析逻辑更正后会遭到拒绝。
-
YouTube 可添加可选的 HTTP 请求标头。
-
YouTube 可能会在插入或更新资源时更改其保留(存储)的信息。但是,选择更改不会影响也不必更改相应 API 请求的语法。
-
YouTube 可能会更改可浏览的类别组或新上传的视频指定加入的类别组。
-
我们随时会删除或更改未记录的功能。
API 响应
不希望更改的功能
-
现有的 XML 标记名称。
-
遵循 Media RSS 规范,确定该规范中定义且在 Feed 条目中多次出现的元素的顺序。例如,如果某个条目包含多个
<media:thumbnail>标记,则这些标记会按重要性排序。 -
<category>标记的term属性值,用于标识 Feed 或 Feed 条目中所述商品的类型。在<feed>或<entry>标记中,<id>标记用于指定条目标识的唯一资源,<category>标记用于标识条目描述的资源类型。对于此<category>标记,scheme 属性的值为http://schemas.google.com/g/2005#kind,term 属性的值表示 Feed 条目描述的是视频、播放列表链接、订阅、联系人还是其他实体类型。
可以更改的功能
-
YouTube 可在 API 响应中添加新的 XML 标记。
-
YouTube 可在现有的 XML 标记中添加新的属性。
-
现有 API 代码可能以不同的值重复使用。例如,YouTube 可以添加具有不同
type值的新<media:restriction>标记,也可以添加具有不同scheme和role的新<media:credit>标记。 -
在 API 响应中,XML 标记和属性的顺序可能会更改。
-
可选的子标记可以从 API 响应中删除。
-
我们随时会删除或更改未记录的功能。
最佳做法
-
使用
<id>标记值来标识条目。 -
使用
self链接检索条目。 -
使用
edit链接修改或更新条目。 -
使用视频条目的
<yt:videoid>标记值可获取 YouTube 用来唯一标识该视频的值。请勿解析链接中的视频 ID。 -
使用
<link>、<content>和<gd:feedLink>标记中标识的网址在 Feed 之间导航。YouTube 支持一组有限的网址,您可以构建这些网址来可靠地检索特定 Feed。除了下文列出的供稿网址以外,您不得创建自己的供稿网址,因为这些网址可能意外中断。- /feeds/api/videos/
<videoid> - /feeds/api/users/default
- /feeds/api/users/default/uploads
- /feeds/api/users/default/favorites
- /feeds/api/users/default/contacts
- /feeds/api/users/default/inbox
- /feeds/api/users/default/playlists
- /feeds/api/users/default/subscriptions
- /feeds/api/users/default/newsubscriptionvideos
- /feeds/api/standardfeeds/
regionID/feedID_CATEGORY_NAME(如需了解详情,请参阅参考指南)
- /feeds/api/videos/
-
请勿尝试解析 API 响应中网址中的数字或字母数字标识符。API 响应包含与 YouTube 网站上的资源(例如视频 ID [
<yt:videoid>] 和用户名 [<name>和<media:credit>).])相关联的标识符的特定标记 -
如果您提交 API 请求以插入 (POST) 或更新 (PUT) 信息,请使用对该请求的 XML 响应来确定 YouTube 实际存储了请求中的哪些代码值。如 API 请求的向后兼容性准则中所述,YouTube 可能会在插入或更新资源时更改其保留(存储)的信息,这意味着请求中的某些标记可能会被忽略。
-
检索 XML Feed 时,如果您的应用允许用户更新 Feed 条目,请存储与 Feed 条目相关的未识别 XML 标记和属性。如果用户更新资源,您的应用应在更新请求中包含所有无法识别的标记和属性。这种做法确保了您的应用程序不会在更新资源的过程中不慎删除新 API 功能的相关信息。
以下示例说明了这种最佳做法:
- 您的应用程序可以让用户更新视频说明。
- 您的应用使用 API 检索视频条目,但无法识别条目中的某个标记。
- 用户修改了此视频说明。
- 您的应用需要将完整的视频条目发回给 API。此条目必须包含第 2 步中的未识别标记,否则相应的值可能会删除。
-
请先确定标记存在并且包含非零值,然后再尝试显示标记值。
-
如上所述,YouTube 可能会为具有枚举值集的现有标记或属性添加新值。通常,您的代码应解析具有枚举值集的 XML 元素的值,然后定义适用于这些值的操作。即使该元素只有一个可用的枚举值,也推荐采用这种做法。
例如,
<media:credit>标记用于标识视频的所有者。该标记的role属性的唯一已记录值为uploader,表示视频是由 YouTube 合作伙伴上传的。此最佳实践规定,您的应用应先确认标记的role属性的值确实为uploader,然后再将相应的用户标识为视频所有者。(此预防措施可确保,如果 YouTube 为视频添加了其他类型的制作人员名单(例如导演),您的代码不会错误地识别视频所有者。)-
如果某个标记具有一组枚举值,而您不认识该标记的值,则应忽略该标记所在的整个
<entry>。 -
如果您不认得
<category>标记的term属性值(其scheme属性值为http://gdata.youtube.com/schemas/2007/subscriptiontypes.cat),请忽略订阅 Feed 条目。该特定标记用于标识条目标识的订阅类型。如果您的应用程序无法识别订阅类型,则不应显示有关该条目的信息。 -
如果任何其他的属性具有枚举值集合而您无法识别该属性的值,您应当忽略该属性所对应的标记。
-
-
您的应用代码应随时预期收到
yt:error消息。如果 API 操作失败,则您的应用程序应识别出错误并向用户显示实用的讯息。 -
YouTube 可能会随时添加新的视频分类。YouTube 也可能会更新或弃用现有类别。您可以从 http://gdata.youtube.com/schemas/2007/categories.cat 检索当前类别文件。
-
在 API 响应中使用
<link>标记可识别 Feed 中前一页和/或下一页条目的分页链接。如需了解详情,请参阅参考指南的将结果分页部分。